web-dev-qa-db-fra.com

Comment ajouter des nonces Wordpress à une requête ajax

J'ai un plugin, un travail cron exécute refresh_my_plugin() quotidiennement.

J'ai besoin d'un bouton sur la page Options/Options de mes plugins, permettant à un utilisateur d'exécuter manuellement ladite fonction, et je le veux en ligne, avec ajax.

J'ai ce qui suit qui devrait fonctionner - mais comment pourrais-je y ajouter Wordpress Nonces?

<?php 
    if (isset($_POST['refresh_my_plugin'])) {
        refresh_my_plugin();
    }

    function refresh_my_plugin() {
        // main function, runs daily with cron
        return true;
    }
?>

<button id='refresh'>Refresh My Plugin</button>

<script>
    jQuery('#refresh').click(function(){
        $.ajax({
            type: 'post',
            data: { "refresh_my_plugin": "now"},
            success: function(response) { 
                jQuery('#refresh').text("Successfully Refreshed!");
            },
            error: function(response) { 
                jQuery('#refresh').text("...error!");
            },
        });
    });
</script>
2
David Sword

Je l'ai compris. Simplement, dans ma demande, sous data, j'ai ajouté

"nonce" : "<?php echo wp_create_nonce( 'refresh_my_plugin' ); ?>"

puis pour vérifier

if (isset($_POST['refresh_my_plugin']))
    if ( wp_verify_nonce( $_POST['nonce'], 'refresh_my_plugin' ) )
        refresh_my_plugin();

Avec wp_verify_nonce incorrect, je reçois plutôt un 403, qui est reflété sur le bouton avec le gestionnaire error.

2
David Sword