Wypo Logo Header
Documentations / Form Master / Exemples / Ajout d’un champ personnalisé pour sélectionner un article de blog

Ajout d’un champ personnalisé pour sélectionner un article de blog

Le code suivant crée un champ personnalisé de sélection de post pour le plugin WP Form Master, permettant aux utilisateurs de choisir un article dans une liste déroulante dans un formulaire. Ce champ vérifie également si une sélection valide a été faite (si obligatoire), enregistre l’ID ou le titre du post sélectionné, et permet de l’ajouter dans les formulaires grâce à un shortcode.

Code

PHP

Explications

Structure globale de la classe

La classe WP_FormMaster_AddCustomField_PostSelect définit et enregistre un nouveau champ personnalisé qui affiche une liste déroulante de posts. Ce champ utilise plusieurs filtres et raccourcis WordPress pour s’intégrer au formulaire, contrôler l’affichage, et gérer la validation.

Variables de la classe

  • $fieldname : Stocke le nom du champ, ici "select-post".
  • $isRequired : Indique si le champ est requis, ici défini sur true.

Constructeur de la classe

Le constructeur de la classe ajoute plusieurs filtres et un shortcode pour intégrer le champ personnalisé dans le formulaire :

  1. allowed_block_types_all : Utilisé pour définir quels blocs sont autorisés dans le formulaire WordPress.
  2. wpformmaster-form-post-select : Crée un shortcode pour afficher la liste déroulante des posts dans le formulaire.
  3. wpfmaster_form_extractfields : Permet d’ajouter les attributs du champ personnalisé au formulaire.
  4. wpformmaster_field_value : Extrait et interprète la valeur sélectionnée dans le champ pour l’enregistrement des données.
  5. wpfmaster_form_validate_field : Gère la validation du champ pour s’assurer qu’un post a bien été sélectionné si le champ est requis.

Méthodes de la classe

1. addRequiredError

Cette méthode est utilisée pour ajouter un message d’erreur si l’utilisateur ne sélectionne pas de post dans le champ obligatoire :

  • Paramètres : Elle reçoit plusieurs paramètres comme $formID, $key (nom du champ), $type, $field, $errors, $posts, et $files.
  • Fonctionnement :
    • Elle vérifie d’abord si le champ est obligatoire.
    • Ensuite, elle vérifie si un post valide est sélectionné (existant et de type post).
    • Si le champ est vide ou contient une sélection non valide, elle renvoie un message d’erreur : "Veuillez sélectionner un article".

2. getFieldValue

Cette méthode détermine la valeur du champ à enregistrer dans le formulaire :

  • Paramètres : En plus de $value, $key, $type, $attrs, $posts, $files, elle prend aussi $getInterpretValue pour indiquer si la valeur doit être interprétée.
  • Fonctionnement :
    • Si $getInterpretValue est true, elle renvoie le titre du post sélectionné.
    • Sinon, elle renvoie simplement l’ID du post (en tant qu’entier).
    • Si le champ est vide, elle renvoie la valeur par défaut de $value.

3. extractFields

Cette méthode permet d’ajouter ce champ au tableau des champs extraits par WP Form Master :

  • Fonctionnement :
    • Elle ajoute un nouveau champ avec un attribut de type custom-select et le nom défini dans $fieldname.
    • Ce champ sera ensuite disponible pour le formulaire, avec le nom approprié pour être identifié lors de l’envoi.

4. postSelectCallback

Cette méthode définit l’affichage HTML du champ de sélection dans le formulaire :

  • Paramètres : Elle prend $atts pour accepter les attributs personnalisés passés dans le shortcode.
  • Fonctionnement :
    • Utilise get_posts pour récupérer tous les posts publiés.
    • Crée une liste déroulante HTML où chaque option représente un post, affichant son titre et stockant son ID comme valeur.
    • Si $isRequired est true, le titre du champ sera marqué d’un astérisque pour indiquer qu’il est obligatoire.

5. setBlocks

Cette méthode autorise certains blocs pour l’éditeur de blocs WordPress (Gutenberg) lorsque le formulaire est modifié :

  • Fonctionnement :
    • Si l’éditeur est dans le contexte d’un formulaire WP Form Master (ici identifié par le post type fmaster_form), elle autorise le bloc core/shortcode.
    • Cela permet d’utiliser le shortcode pour ajouter ce champ spécifique dans l’éditeur de blocs.

Instanciation de la classe

La ligne new WP_FormMaster_AddCustomField_PostSelect(); crée une nouvelle instance de la classe et active le champ personnalisé lorsque le code est exécuté.

Back-office

Wypo Wp Form Master Exemples Ajout Champ Personnalise