J'ai écrit des champs supplémentaires pour ma taxonomie personnalisée. J'ai ajouté les champs de formulaire au formulaire d'ajout. Je l'ai fait enregistrer en gérant les valeurs appropriées dans $_POST
. Dans 4.1.x, le formulaire add est Ajax-ified. Comment puis-je effacer les champs de formulaire en cas de succès?
Plus précisément, comment visualiser la réponse à l'action add-tag
admin ajax?
Vous pouvez y parvenir avec un peu de jQuery:
Créez ce fichier dans THEMEFOLDER/js/appelé field-clear.js et remplacez #formID
par l'ID du formulaire que vous souhaitez réinitialiser:
//Code runs when an ajax request succeeds
jQuery( document ).ajaxSuccess(function( event, xhr, settings ) {
//Check ajax action of request that succeeded
if(settings.action == 'add_tag') {
//Reset the form
jQuery('#formID')[0].reset();
//Send ajax response to console.
console.log("Triggered ajaxSuccess handler. The ajax response was: " + xhr.responseText );
}
});
Puis dans functions.php chargez votre javascript:
wp_register_script('field-clear-script', get_stylesheet_directory_uri() . '/js/field-clear.js', array('jquery'), null, true);
function field_clear_load_scripts() {
wp_enqueue_script('field-clear-script');
}
add_action('admin_enqueue_scripts', 'field_clear_load_scripts');
EDIT - Code ajouté pour afficher le texte de réponse ajax. Ajout de la vérification du paramètre d'action ajax. Modification de la fonction de mise en file d'attente pour mettre en file d'attente sur l'administrateur, car je pense que c'est là que c'est requis.
La réponse de Jason est très proche, ce qui a conduit à cette solution pour moi sur WP 4.9:
$(document).ajaxSuccess(function(evt, xhr, opts) {
if (
xhr.status >= 200
&& xhr.status < 300
&& opts.data
&& /(^|&)action=add-tag($|&)/.test(opts.data)
&& /(^|&)taxonomy=YOUR_TAXONOMY($|&)/.test(opts.data)
&& xhr.responseXML
&& $('wp_error', xhr.responseXML).length == 0
) {
// clear your fields
}
});