Prérequis:
-Connaître PHP, JS
-Connaître WordPress
-Connaître l’AJAX
Nous retrouvons dans EOFramework trois types d’actions permettant de lancer des requêtes AJAX.
- Les actions en attributs: action-attribute
- Les actions des formulaires: action-input
- Les actions « suppression »: action-delete
Ses trois actions s’utilisent grâce à l’ajout d’une classe sur un élément du DOM.
Peu importe la classe utilisé dans notre élément (action-attribute, action-input ou action-delete), celle-ci se trouvera toujours accompagnée de deux attributs supplémentaires:
- data-action est l’attribut déclarant le nom de l’action pour le hook ‘wp_ajax (action )’ de WordPress.
- data-nonce est l’attribut déclarant le nonce pour sécurisé l’action.
Action Attribute
Nous allons créer un span permettant de créer un post WordPress :
Comme dit plus haut, nous allons rajouté les deux attributs supplémentaire: data-action et data-nonce.
A partir de là, nous avons déjà une requête AJAX de type POST contenant les données suivantes :
- action égale à create_my_post
- nonce égale à un token correspondant à l’action create_my_post.
Utilisons WordPress pour traiter notre action AJAX en PHP:
Ligne 7: Nous avons défini un nonce dans l’attribut data-nonce, nous l’utilisons pour vérifier que la requête XHR contient bien un token.
Donner un titre personnalisé à l’article
Ajoutons l’attribut data-title dans le span:
Modifions maintenant notre function create_my_post pour utiliser notre nouvelle donnée data-title, vu que la requête AJAX envoyé par action-attribute est de type POST, nous allons retrouver notre valeur dans $_POST[‘title’].
Voici le nouveau code de la function create_my_post.
Action Input
Nous allons créer un bouton ainsi qu’un formulaire. Ensuite affectons la classe action-input à ce bouton avec son data-parent qui est un attribut obligatoire pour le fonctionnement de Action Input.
Ligne 1: La classe « my-form » sur la balise form est très importante pour la balise à la ligne 11
Ligne 11: La classe « action-input » permet de déclencher la requête AJAX lors du clic sur le bouton. L’attribut data-parent est attaché à « my-form », celà permet d’englober votre formulaire. Tous les inputs, select, textarea qui contiennent l’attribut « name » sera envoyé à la requête.