Utilisation de WordPress Meta Box pour créer un plugin SEO de base

L'une des fonctionnalités essentielles fournies par WordPress pour étendre ses fonctionnalités est son API Meta Box. Ces méta-boîtes vous permettent d'ajouter facilement des données supplémentaires à votre contenu. Par exemple, le Tags post meta box vous permet de définir des tags pour votre message.

Dans cet article, nous allons construire un plugin SEO de base qui ajoute une méta-description, ainsi qu’un titre et une balise de description Open Graph à la tête élément de pages WordPress. En faisant cela, nous allons également apprendre à créer des méta-boîtes personnalisées, à nettoyer les données fournies par l'utilisateur, à enregistrer les données dans un message ou une page, et à récupérer et récupérer les données enregistrées..

Étant donné que je ne vais pas expliquer chaque élément de l'utilisation des codes dans ce didacticiel, une connaissance de base des boîtes méta et des fonctions de PHP est supposée. Si vous n'êtes pas familier avec les bases, alors un bon début dans Comment créer des boîtes d'écriture / méta WordPress personnalisées.

Créer la Meta Box

Tout d'abord, nous devons décider où la boîte de méta doit apparaître. 

Dans notre plugin, la meta box sera ajoutée dans le poster et page écran. Pour ce faire, une fonction contenant une variable stocke un tableau indiquant où afficher la méta-boîte et une pour chaque boucle cette boucle à travers le tableau et ajoute la boîte méta à l'écran en utilisant le add_meta_box une fonction. 

Et enfin, la fonction est accrochée au add_meta_boxes action.

fonction tes_mb_create () / ** * @array $ screens Écran sur lequel afficher la méta-boîte * @values ​​post, page, tableau de bord, lien, pièce jointe, type_post_personnalisé * / $ screens = array ('post', 'page' ) foreach ($ screen as $ screen) add_meta_box ('tes-meta', 'Liste des moteurs de recherche', 'tes_mb_function', $ screen, 'normal', 'high');  add_action ('add_meta_boxes', 'tes_mb_create');

Alternativement, vous pouvez ajouter un double add_meta_box fonction pour inclure la boîte méta à la fois à la page et à l’écran de la page, comme ceci:

fonction tes_mb_create () add_meta_box ('tes-meta', 'Liste des moteurs de recherche', 'tes_mb_function', 'post', 'normal', 'high'); add_meta_box ('tes-meta', 'Liste des moteurs de recherche', 'tes_mb_function', 'page', 'normal', 'haut');  add_action ('add_meta_boxes', 'tes_mb_create');

Codage des champs de la boîte à méta

A partir du code ci-dessus, la fonction de rappel pour imprimer le code HTML de la section d'écran d'édition est référencée comme tes_mb_function quel est le troisième argument passé à add_meta_box une fonction.

Dans notre plugin, nous ne codons que deux champs de formulaire HTML pour gérer les données Title et Description..

function tes_mb_function ($ post) / / récupérer les valeurs de métadonnées si elles existent $ tes_meta_title = get_post_meta ($ post-> ID, '_tes_meta_title', true); $ tes_meta_description = get_post_meta ($ post-> ID, '_tes_meta_description', true); // Ajoute un champ nonce afin que nous puissions le vérifier ultérieurement lors de la validation de wp_nonce_field ('tes_inner_custom_box', 'tes_inner_custom_box_nonce'); écho '
Titre Tag:
Meta Description:
';

L'explication de la tes_mb_function Le code ci-dessus est comme suit:

  • Récupérez et stockez les valeurs de métadonnées dans une variable uniquement si elle existe. Ceci est fait afin de renseigner les champs avec leurs valeurs quand ils sont présents dans la base de données.
  • Un flux nonce est ajouté afin que nous puissions le vérifier ultérieurement lors de la vérification avant que les données insérées dans les champs de formulaire ne soient enregistrées dans la base de données..
  • Le formulaire HTML composé d'un élément d'entrée de champ de texte et d'une zone de texte permettant de capturer les données de titre et de balise de description, respectivement, est répercuté / imprimé.

À ce stade, vous devriez voir la boîte méta dans l'écran de publication et de page..


Enregistrement des données de la boîte méta

Une méta-boîte n'est pas complète jusqu'à ce qu'elle puisse enregistrer les données dans la base de données. Le nom de la fonction pour gérer la sauvegarde des données sera tes_mb_save_data. Son code est le suivant.

fonction tes_mb_save_data ($ post_id) / * * Nous devons vérifier que cela provient de notre écran et avec l’autorisation appropriée *, car save_post peut être déclenché à d’autres moments. * / // Vérifiez si notre nonce est défini. if (! isset ($ _POST ['tes_inner_custom_box_nonce']))) return $ post_id; $ nonce = $ _POST ['tes_inner_custom_box_nonce']; // Vérifiez que le nonce est valide. if (! wp_verify_nonce ($ nonce, 'tes_inner_custom_box')) return $ post_id; // S'il s'agit d'une sauvegarde automatique, notre formulaire n'a pas été soumis. Nous ne souhaitons donc rien faire. if (défini ('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $ post_id; // Vérifier les autorisations de l'utilisateur. if ('page' == $ _POST ['post_type']) if (! current_user_can ('edit_page', $ post_id)) return $ post_id;  else if (! current_user_can ('edit_post', $ post_id)) return $ post_id;  / * OK, il est sûr pour nous de sauvegarder les données maintenant. * / // Si d'anciennes entrées existent, récupérez-les $ old_title = get_post_meta ($ post_id, '_tes_meta_title', true); $ old_description = get_post_meta ($ post_id, '_tes_meta_description', true); // Désinfecte l'entrée utilisateur. $ title = sanitize_text_field ($ _POST ['tes_meta_title']); $ description = sanitize_text_field ($ _POST ['tes_meta_description']); // Met à jour le champ méta dans la base de données. update_post_meta ($ post_id, '_tes_meta_title', $ title, $ old_title); update_post_meta ($ post_id, '_tes_meta_description', $ description, $ old_description);  add_action ('save_post', 'tes_mb_save_data');

Examinons le code ci-dessus:

  • Premièrement, nous vérifions que cela provient de notre écran et avec une autorisation appropriée, car save_post peuvent être déclenchés à d’autres moments et vérifier également que le nonce précédemment défini dans tes_mb_function est valable.
  • Ensuite, si une entrée existe déjà dans la base de données, nous allons la récupérer et la stocker dans $ old_title et $ old_description variable. Nous faisons cela parce que le update_post_meta la fonction qui enregistre les données dans la base de données nécessite éventuellement de vérifier une ancienne valeur avant de mettre à jour la ligne de la base de métadonnées avec les nouvelles valeurs.
  • Après cela, les données soumises sont nettoyées à l'aide de WordPress ' sanitize_text_field fonction qui convertit le HTML en entité, supprime toutes les balises, supprime les sauts de ligne, les tabulations et les espaces, les octets de la bande.
  • Les métadonnées sont mises à jour dans la base de données via update_post_meta.
  • Finalement, le tes_mb_save_data est accroché au save_post action pour enregistrer les données de la boîte à méta lorsque la publication ou la page est mise à jour.

Utilisation des données sauvegardées

N'oubliez pas que les données enregistrées doivent être utilisées pour ajouter un titre et une description Open Graph, ainsi que la balise meta description dans la liste. tête élément de chaque page.

Pour ce faire, nous allons créer une fonction nommée tes_mb_display qui contiendra les balises désirées et ensuite, accrochez-le dans  wp_head action.

fonction tes_mb_display () global $ post; // récupère les valeurs de métadonnées si elles existent $ tes_meta_title = get_post_meta ($ post-> ID, '_tes_meta_title', true); $ tes_meta_description = get_post_meta ($ post-> ID, '_tes_meta_description', true); écho '      ';  add_action ('wp_head', 'tes_mb_display'); 
  • Pour détecter l’identité de la publication, nous saisissons une référence à la publication à l’aide de la touche $ post objet global.
  • Les métadonnées sont ensuite extraites de la base de données et sauvegardées dans le répertoire. $ tes_meta_title et $ tes_meta_description variables, respectivement. 
  • Ensuite, nous avons défini la balise META à insérer dans le modèle. tête élément.
  • Enfin, nous relions la fonction à wp_head.

Si vous avez ajouté et enregistré un titre et une description par rapport à un article ou à une page, l'affichage de cette source de page devrait révéler la présence d'une balise de titre et de description Open Graph à côté d'une méta-description utilisée par les moteurs de recherche..

Résumé

Dans cet article, nous avons créé un plugin SEO de base qui ajoute une méta-description et des balises Open Graph utilisées par les réseaux sociaux des moteurs de recherche à la section d'en-tête de WordPress..

Nous avons appris à créer des méta-boîtes, à remplir des champs, à nettoyer les données avant de les enregistrer dans la base de données et à récupérer les données enregistrées pour les utiliser..
Affectation supplémentaire pour en savoir plus sur ce processus: étendre ce plugin et ajouter un champ de mot clé méta au formulaire de boîte méta et l'inclure également parmi les balises insérées dans l'en-tête WordPress.