Adicione aviso para editar o botão slug / permalink na tela do editor.

4

Eu quero que os usuários recebam um aviso quando clicarem no botão para alterar o link permanente. Eles darão confirmação se quiserem continuar.

Aqui está o que eu fiz:

//Setting a variable for the button Class.
var editSlug = document.getElementsByClassName("edit-slug");

//Detecting when the button is clicked.
editSlug[0].addEventListener ( "click", function() {

//Returning the value of the popup.
return confirm('Warning: Don't do this unless you have to.');

});

O problema que estou tendo, é mesmo ao clicar em cancelar, ainda me permite editar o link do meu post. Se eu selecionar cancelar, ele deve retornar um valor falso e cancelar o evento de clicar no botão de edição. Isso funciona bem para outros botões no WP, como publicar, atualizar, etc.

Eu também só posso gerar o pop-up uma vez após o carregamento da página, se eu selecionar uma resposta e clicar em editar novamente, não receberei mais nenhum pop-up.

    
por Snake 22.12.2016 / 00:18

1 resposta

4

O WordPress já conectou eventos jQuery a esse botão que você pode omitir com o método off() ou manter as coisas simples e adicione uma sobreposição acima desse botão e aja como o botão, solicitando que os usuários confirmem a ação de edição em primeiro lugar:

jQuery(document).ready(function($){
    var c = $('#edit-slug-buttons')
      , b = $('button',c).first();

    c.css({
        position: 'relative'
    }).append('<span class="se-overlay" style=" position: absolute; top: 0; left: 0; width: 100%; height: 100%; padding: 4px 0; margin-top: -3px; cursor: pointer"></span>');


    $(document).on("click", "#edit-slug-buttons .se-overlay", function(e){
        if ( confirm("Warning: Don't do this unless you have to.") ) {
            $(this).closest('#edit-slug-buttons').children('button').first().trigger('click');
        }
        return e.preventDefault();
    });
});

Espero que ajude.

    
por Samuel Elh 22.12.2016 / 00:39