Faites-le en code !
Un guide pour créer un plugin de structure de site personnalisé dans WordPress.
Présenté par :
Peter Hebert
Rex Rana Design and Development Ltd.
Qu'est-ce que la structure du site ?
Types d'articles
Métaboxes et champs
Taxonomie
Menus
Structure des liens permanents
Pourquoi un plugin personnalisé ?
La fonctionnalité doit résider dans le code, pas dans la base de données
Thèmes pour la présentation, plugins pour la fonctionnalité
Gérer le code dans un système de contrôle de version (git, svn)
Portabilité du code / déploiement
environnements: développement / tranition (staging) / production
réutilisation pour plusieurs sites web / différents clients
Notre exemple de plugin
Nous allons créer un répertoire de films (comme IMDb)
Custom Post Type : Film
Taxonomie personnalisée : Genre
Métabox : Données Film
Champs : Date de sortie, Durée, Réalisateur
github.com/rexrana/my-custom-structure
Fonctionnalité de base de WordPress
Pas facile à utiliser, vous devez faire la plupart du travail
Fonctions CRUD (créer, lire, mettre à jour et supprimer)
Fonctions de rappel (callback) avec HTML pour afficher les champs dans le tableau de bord de l'administration
Assainissement / validation des entrées
nombres aléatoires (nonces)
C'est beaucoup à retenir - le temps pourrait être mieux utilisé
Heureusement, il existe une meilleure solution !
De nombreux outils existent pour simplifier la création de la structure du site :
Plugins (Advanced Custom Fields, Pods, Meta Box, Toolset)
La plupart ont une fonctionnalité d'exportation vers le code
Bibliothèques pour développeurs : CMB2, Carbon Fields
Générateurs de code : GenerateWP, commande WP-CLI scaffold
Plugins de structure
Créez votre structure dans le tableau de bord de l'administrateur.
Optionnellement, exporter en code
Advanced Custom Fields
Pods framework
Meta Box
Toolset
plugin le plus populaire pour la création de champs personnalisés
Version gratuite est trés limité - nécessite la version Pro (abonnement) pour des fonctionnalités avancées:
ajouter plus de types de champs
la répétition des groupes de champs
création des blocs Gutenberg
exportation vers code - formats JSON et PHP
Peut créer des types de contenu et des champs
support de l'éditeur de blocs (Gutenberg) et de l'éditeur classique
créer des relations avancées
inclut une interface de programmation d'application (API REST) et des commandes WP-CLI
Prêt pour la traduction - intégrations avec WPML, Polylang
léger, rapide et simple à utiliser
support multisite
plus de 40 types de champs
inclut des générateurs en ligne pour les champs, les types de posts, les taxonomies et les blocs
support robuste de l'éditeur de blocs
bibliothèque de blocs dynamiques
types d'articles personnalisés, taxonomies et champs
créer des modèles de page avec l'éditeur de blocs
création de formulaires
accès : gérer des rôles et privilèges.
cartes : Google Maps ou Azure Maps
Bibliothèques pour développeurs
Déclarer des métaboxes et champs dans le code en avec l'API
suivre les changements avec git à l'intérieur de votre plugin
include()
pour lier la bibliothèque en PHP, ou utiliser Composer pour la déclarer comme dépendance du plugin.
Boîte à outils pour construire des métaboxes, des champs personnalisés et des formulaires
Déclarez les métaboxes et les champs en utilisant des tableaux de paramètres
35 types de champs inclus, avec API pour déclarer les vôtres
Utiliser sur les types d'articles, les pages d'options, les profils d'utilisateurs
même sur le front-end de votre site
facile pour les développeurs de déclarer des champs personnalisés
riche en fonctionnalités (pas de version "pro" payante)
champs personnalisés pour les types d'articles, les pages d'options, les taxonomies, les utilisateurs, les commentaires, les menus de navigation et les widgets.
groupes de champs répétables
définir des blocs Gutenberg dynamiques sans JavaScript.
formulaires en ligne ou outils en ligne de commande
génère le code
copier / coller vers un fichier PHP dans le plugin
Assistants basés sur des formulaires pour générer du code conforme aux normes de codage de WordPress
Sélectionnez un outil, remplissez le formulaire, générez le code.
Copiez le code prêt à l'emploi directement dans votre plugin.
Commande pour l'interface en ligne de commande de WordPress (WP-CLI)
Génère du code de démarrage pour les thèmes, les plugins, les tests unitaires, les types de messages et la taxonomie.
Limité - ne peut pas spécifier de paramètres avancés, ne donne qu'une configuration minimale avec des valeurs par défaut.
Fournit un point de départ rapide
ne peut pas spécifier de "supports" (types d'articles)
Exécuter des commandes à partir du répertoire de base du site
Type d'article : Film
wp scaffold post-type film --label=Film --textdomain=structure \
--dashicon=editor-video --plugin=my-custom-structure
Taxonomie : Genre
wp scaffold taxonomy genre --post_types=film --label=Genre \
--textdomain=structure --plugin=my-custom-structure
Mise en place de l'ensemble
Si vous utilisez des plugins basés sur l'interface graphique, installez le plugin de la manière habituelle.
Bibliothèques de développement : il faut généralement faire un PHP include()
, ou déclarer une dépendance Composer pour votre plugin.
Créez des fichiers PHP séparés pour chacun des éléments suivants : Post Types, Taxonomie, Métaboxes/Champs
inclure ces fichiers dans le fichier PHP principal du plugin
cela rend les éléments plus faciles à trouver, à commenter ou à supprimer.
Les plugins Premium nécessitent une licence ACF Pro
afficher la structure du dossier du plugin dans l'éditeur de code
Inclure les bibliothèques du développeur
CMB2 :
if( file_exists( dirname(__FILE__).'/lib/cmb2/init.php' ) ) {
require_once( 'lib/cmb2/init.php' ) ;
}
Carbon Fields (à l'aide de Composer) :
composer require htmlburger/carbon-fields
Assurez-vous d'inclure l'autoloader PSR-4 de Composer dans le plugin
require_once (__DIR__ . '/vendor/autoload.php') ;
Includes pour déclarer la structure
// Types d'articles et taxonomies.
require_once('post-types/film.php') ;
require_once('taxonomies/genre.php') ;
// Métaboxes et champs.
/* utilisation des fonctionnalités de base de WordPress */
require_once('inc/wp-fields.php') ;
/* utilisant ACF */
require_once('inc/acf-fields.php') ;
/* utilisant CMB2 */
require_once('inc/cmb2-metaboxes.php') ;