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>
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
.