TUTORIEL

Elementor – comment créer votre propre plugin de courrier personnalisé

Dans le guide précédent : Propre plugin ajoutant un widget au plugin Elementor nous avons créé un plugin qui ajoute ses propres widgets au plugin Elementor. Nous aimerions maintenant créer un widget pour notre plugin qui ajouterait des messages de son propre type, spécifiés dans le widget, et un champ que nous choisirions également dans Elementor. Ce sera la même solution que dans REDO JSComposer Additional – plugin ajoutant un widget à WPBakery seulement au lieu de WPBakery le plugin cible sera Elementor.

Commençons à travailler sur le widget.

Nous créons un autre widget dans le dossier widgets et l’appelons customPostRedo.php, qui stockera le CustomPostRedo.

Créer votre propre widget pour Elementor.

Nous devons retourner à la racine de notre plugin et éditer le fichier main.php. Nous devons indiquer le chemin vers notre widget et sa classe dans la principale E_REDO. Pour ce faire, nous ajoutons la même manière que dans le widget projekty. php – path in require_once() et ajouter un chemin vers CustomPostRedo dans register_widgets().

Tout est prêt. Nous allons éditer notre fichier customPostRedo.php. Donnez un nom propre à namespace et ajoutez des chemins vers les classes appropriées à utiliser dans notre code. Ajoutez une vérification pour le ABSPATH et définissez ensuite le nom de notre classe CustomPostRedo hérite d’une classe Widget_Base – Classe de plugin Elementor.

Nous allons créer une classe qui prend en charge notre widget – CustomPostRedo. Nous définissons plusieurs fonctions intégrées d’Elementor, appelé notre widget.

Allez à la fonction principale _register_controls(), qui récupérera le type de message personnalisé que vous souhaitez afficher et les champs de message que vous souhaitez obtenir dans la vue. Pour cela, nous devons télécharger la liste des messages personnalisés et leurs champs et champs personnalisés dans le widget Elementor. Nous nous baserons sur le get_option(‘cptui_post_types’) et créé dans le fichier main.php function prepareCustomFields(). Le téléchargement d’une liste de types de messages est analogue à la façon dont nous l’avons créée dans l’article : REDO JSComposer Additional – plugin ajoutant un widget à WPBakery – c’est ici que sont expliquées les fonctions et les listes sur lesquelles nous allons travailler.

Nous avons déjà préparé une liste avec les types de postes et leurs domaines. Nous créons une section dans notre widget et donnons le label approprié pour indiquer qu’il s’agira d’une section pour choisir le type de message.

Nous pouvons maintenant afficher les types de postes possibles parmi lesquels choisir. Il est important de se rappeler que chaque nom de paramètre est individuel et unique. Si les noms des paramètres sont répétés – notre widget ne fonctionnera pas. Il est important de bien nommer nos paramètres afin de pouvoir les exploiter par la suite (il doit être cohérent d’identifier chaque paramètre pour que nous sachions de quoi il est responsable). Pour afficher les types de messages, nous utilisons le $_custom_posts_params pour lequel nous ajoutons un radio-button, using elementor add_control(). Nous définissons le nom du paramètre – ‘post-type’. $key – au tableau il nous passera – ‘post-type post personnalisé ‘ – qui sera toujours le nom individuel de chaque type de message. Le type de message utilise le type CHOOSE hérité de Controls_Manager – ce type est synonyme de radio-button. Dans le tableau des options, ajoutez la valeur $key de notre liste.

Fermez maintenant la section des postes douaniers.

Les sections suivantes de notre widget seront créées dans une boucle foreach pour la valeur du $_custom_posts en stockant le type de message et pour chaque type de message les types de champs qui peuvent être affichés. A l’intérieur de la boucle, nous définissons une section pour chaque type de poste qui stocke les types de champs. Les types de champs seront stockés dans une liste $custom_params pour laquelle la boucle foreach où nous assignons les boutons radio appropriés dans la section créée.

Dans la même boucle pour lists $_custom_posts, nous créons les sections suivantes pour les champs personnalisés – individuellement pour chaque type de message.

Le code de fonction complet _register_controls() :

Nous avons reçu une vue dans l’élémentaire contenant toutes les sections qui stockent les valeurs pertinentes :

Widok własnego widgetu Elementora

Nous souhaitons maintenant que les valeurs sélectionnées dans le widget soient affichées dans la vue. L’affichage sera très similaire à celui de widget pour WPBakery. La différence sera que ce n’est pas dans le tableau $atts comme dans WPBakery, mais dans le tableau $settings, qui est complété par la fonction get_settings_for_display(), qui renvoie les paramètres du widget et leurs valeurs. La vue sera transmise dans la fonction render().

Nous téléchargeons une liste des types de postes sélectionnés dans le widget. Créez un $postTypes vide auquel nous ferons suivre les types de courrier. En utilisant la boucle foreach, nous recherchons le $settings. Si la clé du tableau contient ‘post_type-‘ et que la valeur de la clé n’est pas vide, nous passons la valeur à $postTypes.

Nous avons déjà téléchargé la liste des types de messages téléchargés à partir du widget. Nous passons maintenant à l’affichage d’une vue pour eux. La première étape consiste à vérifier si le $postTypes contient les types de courrier. S’il n’est pas vide pour chaque type de poste, un tableau affiche le conteneur et le nom du type de poste.

Pour chaque type de poste, nous téléchargeons une liste de postes. Dans le tableau $args, nous précisons pour quel type de message nous voulons télécharger la liste et le nombre de messages. Dans le $query nous faisons un WP_Query on the board $args. La liste des messages contenus dans $query est transmise à la table $postList, qui stockera les messages téléchargés.

Maintenant, nous vérifions que la liste $postList n’est pas vide. Sinon, nous afficherons un conteneur pour chaque personnage et son titre.

Cherchez maintenant dans le tableau des paramètres $ et affichez les champs sélectionnés. Comme pour les types de message utilisant strpos() nous vérifions si la clé contient ‘post-field‘ ou ‘customfield‘ et affichons ces champs en conséquence. L’affichage est similaire à celui de WPBakery – je me réfère à cet article – lien si vous ne comprenez pas le code ci-dessous.

Le code de fichier complet customPostRedo.php:

Summing

Nous avons reçu une vue qui affiche les messages du type de message personnalisé sélectionné et leurs champs, que nous sélectionnons également dans le widget. Cette vue peut être facilement convertie à l’aide du CSS, car chaque div d’un champ est individuellement nommé avec le nom du type de poste et le nom du type de champ.

Il est important de se rappeler, lors de la création de widgets similaires pour Elementor, que les noms de paramètres doivent avoir des noms uniques – si un nom de paramètre est répété, le widget ne fonctionnera pas correctement. Il est également utile d’utiliser le débogage variable pour vérifier le contenu de nos listes sur lesquelles nous opérons.