Publication via le front-end soumission avancée

Aujourd'hui, nous poursuivrons notre mini-série sur l'insertion de publications via le serveur frontal, mais dans cette partie, nous examinerons exclusivement comment gérer les méta-champs personnalisés que nous pourrions avoir dans notre type de publication. Alors, préparons-nous et commençons!


introduction

Nous en sommes maintenant à la troisième partie de notre mini-série, et si vous n'avez pas lu les deux autres, je vous le conseille, car nous reprendrons là où nous en étions restés. Notre objectif, une fois cette mini-série terminée, devrait permettre à l’utilisateur de soumettre des publications via le système frontal, de les éditer et de les envoyer à la corbeille; le tout sans être sur le tableau de bord WordPress. Ces méthodes peuvent être utilisées à la fois dans un thème ou un plugin et être très adaptables pour réaliser des soumissions très avancées et complexes.

La démo et les fichiers à télécharger constituent un thème simplifié créé uniquement pour les besoins de ce didacticiel..

Alors ouvrez votre éditeur de texte préféré et commençons!


Étape 1 Insertion d'une méta-boîte personnalisée

Commençons par créer d’abord un dossier appelé comprendre, dans ce dossier, nous allons créer un fichier appelé post-meta.php. Nous allons créer notre méta-boîte personnalisée à l'intérieur de ce fichier. Je vais parcourir cela assez rapidement, mais si vous voulez en savoir plus sur toutes les merveilles que vous pouvez réaliser avec des méta-boîtes personnalisées, Tammy Hart a écrit une série de didacticiels étonnants appelés «Méta-boîtes personnalisées réutilisables»..

À l'intérieur de notre post-meta.php, Nous allons créer un préfixe afin de nous assurer que nous avons un identifiant unique pour tous nos champs. Nous allons également commencer par créer un tableau contenant toutes nos informations pour créer une méta-boîte personnalisée. Le code suivant permet de créer un identifiant pour la boîte à méta personnalisée, à définir un titre, à afficher la boîte à méta (quel type de publication) et les champs qu'elle contient:

 // Field Array $ prefix = 'vsip_'; $ vsip_post_meta_box = array ('id' => 'vsip-post-meta-box', 'title' => __ ('Custom Meta', 'framework'), 'page' => 'post', 'context' = > 'normal', 'priority' => 'high', 'fields' => array (array ('name' => __ ('Custom Input One:', 'frame'), 'framework'), 'desc' => __ (' Entrez votre méta personnalisée 1 ',' framework '),' id '=> $ prefix.'custom_one', 'type' => 'text'), array ('name' => __ ('Entrée personnalisée deux:', 'framework'), 'desc' => __ ('Entrez votre méta personnalisée 2', 'framework'), 'id' => $ prefix.'custom_two ',' type '=>' text '),));

Ensuite, nous allons créer notre méta-boîte et nous le faisons en créant une fonction. Dans cette fonction, nous utiliserons la fonction WordPress: add_meta_box.

Le code suivant montre comment nous avons créé notre boîte méta, avec l’utilisation du crochet d’action. add_meta_boxes:

 // Custom Meta Box add_action ('add_meta_boxes', 'vsip_project_add_meta'); fonction vsip_project_add_meta () global $ vsip_post_meta_box; add_meta_box ($ vsip_post_meta_box ['id'], $ vsip_post_meta_box ['title'], 'vsip_display_post_meta', $ vsip_post_meta_box ['page'], $ vsip_post_meta_box  // END OF Fonction: vsip_project_add_meta

Maintenant que nous avons créé notre méta-boîte et que tous les champs sont définis avec les informations que nous souhaitons stocker, nous devons afficher notre méta-boîte. Nous faisons cela en créant une autre fonction portant le même nom que notre troisième paramètre dans notre add_meta_box une fonction. Dans notre cas, nous créons une fonction appelée: vsip_display_post_meta.

Le code suivant récupère chaque champ de notre tableau qui contient toutes nos informations, vérifie le type de champ et génère le type de champ correct:

 fonction vsip_display_post_meta () global $ vsip_post_meta_box, $ post; // Utiliser nonce pour la vérification echo ''; écho ''; foreach ($ vsip_post_meta_box ['fields'] en tant que $ field) // récupère les métadonnées de la publication en cours $ meta = get_post_meta ($ post-> ID, $ field ['id'], true); switch ($ field ['type']) // Si la casse 'texte': echo '','','
'; écho ''; Pause; écho '
'; // END Of Function: vsip_display_post_meta

Nous avons créé notre méta-boîte personnalisée et affiché son contenu. Tout ce que nous avons à faire est de sauvegarder les données une fois que l'utilisateur a inséré du contenu pour les champs. Nous faisons cela en créant une fonction finale qui sauvegardera nos données correctement. Le code est comme suit:

 // Enregistrer les métadonnées add_action ('save_post', 'vsip_post_save_data'); fonction vsip_post_save_data ($ post_id) global $ vsip_post_meta_box; // vérifie la nonce si (! isset ($ _ POST ['vsip_meta_box_nonce'])) ||! wp_verify_nonce ($ _ POST ['vsip_meta_box_nonce'], nom_de_base (__ FILE__))) return $ post_id;  // cocher la sauvegarde automatique si (défini ('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $ post_id;  // vérifie les autorisations si ('page' == $ _POST ['post_type']) if (! current_user_can ('edit_page', $ post_id)) return $ post_id;  elseif (! current_user_can ('edit_post', $ post_id)) return $ post_id;  foreach ($ vsip_post_meta_box ['champs'] en tant que champ $) $ old = get_post_meta ($ post_id, $ field ['id'], true); $ new = $ _POST [$ field ['id']]; if ($ new && $ new! = $ old) update_post_meta ($ post_id, $ field ['id'], $ new);  elseif ("== $ new && $ old) delete_post_meta ($ post_id, $ field ['id'], $ old); // FIN de la fonction: vsip_post_save_data

Ok, je sais que nous avons parcouru cela très rapidement, mais ce didacticiel est axé sur la gestion du méta personnalisé via le serveur frontal. Maintenant que tout est en place et que notre méta-boîte personnalisée est configurée dans nos publications, nous allons continuer sur la manière d'insérer les champs dans notre publication d'insertion et de modifier les champs méta personnalisés..


Étape 2 Éditer nos posts d'insertion

Nous modifierons notre page d'insertion de messages pour compenser les champs personnalisés que nous avons ajoutés récemment. Allons ouvrir notre template-insert-posts.php et insérez des champs supplémentaires. Comme nos champs méta personnalisés sont des champs de texte, nous allons insérer deux champs de saisie de texte supplémentaires dans notre formulaire, comme suit:

 

Nous avons besoin de l'avoir afin que lorsque l'utilisateur clique sur «Soumettre», il insère les méta-informations personnalisées dans les champs appropriés. Pour ce faire, nous devons utiliser la fonction WordPress: update_post_meta, ce que cette fonction permet de mettre à jour la méta de publication, et nous ne pouvons mettre à jour la méta de publication que lorsque nous avons créé une publication et que nous avons un identifiant.

Nous allons donc aller où nous utilisons la fonction: wp_insert_post et juste au-dessus de notre lien de redirection est l'endroit où nous allons insérer notre méta personnalisée.

Le code suivant fait notre test pour vérifier si nous avons créé une publication, puis nous utilisons le update_post_meta fonction et passe le post_id à cette fonction, ainsi que l'ID du champ que nous voulons mettre à jour, et enfin la valeur de notre formulaire que nous publierons dans la méta-boîte:

 if ($ post_id) // Meta à jour la méta personnalisée update_post_meta ($ post_id, 'vsip_custom_one', esc_attr (strip_tags ($ _ POST ['customMetaOne']))); update_post_meta ($ post_id, 'vsip_custom_two', esc_attr (strip_tags ($ _ POST ['customMetaTwo']))); // Redirige wp_redirect (home_url ()); sortie; 

C'est tout! Nous avons créé une méta-boîte personnalisée et mis à jour notre formulaire d'insertion de publication pour nous assurer de cibler ces champs et de les enregistrer correctement. Ensuite, nous allons passer à la façon de modifier notre méta personnalisée.


Étape 3 Modification de notre méta personnalisée

Maintenant, nous devons être en mesure d’éditer la méta personnalisée via l’interface frontale, nous allons donc commencer par ouvrir notre template-edit-posts.php et en insérant nos deux nouveaux champs de saisie que nous avons ajoutés à notre formulaire de postage d'insertion:

 

Ensuite, nous devons récupérer notre méta de publication personnalisée de la publication spécifique. Pour ce faire, nous utilisons la fonction WordPress: get_post_meta à l'intérieur de notre boucle WordPress. Faites défiler jusqu'à l'endroit où nous avons notre WordPress Loop et insérez le code suivant juste en dessous où nous avons obtenu les informations sur notre titre et notre contenu.

 $ custom_one = get_post_meta ($ current_post, 'vsip_custom_one', true); $ custom_two = get_post_meta ($ current_post, 'vsip_custom_two', true);

Maintenant que nous avons les informations de la méta de post personnalisée, nous allons maintenant afficher les valeurs de ceci dans nos champs de saisie de notre formulaire. Le code suivant est la version mise à jour des deux méta-champs personnalisés que nous avons insérés:

 

Comme vous pouvez le constater d'après le code que nous venons d'insérer, les valeurs de nos deux entrées sont les variables de notre méta personnalisée que nous avons créée dans notre boucle WordPress. Vous avez peut-être remarqué que cela pouvait générer nos champs mais lorsque nous apportons des modifications les mises à jour sont faites. C’est parce que nous n’avons pas inséré le code pour mettre à jour le message après que l’utilisateur a cliqué sur mettre à jour.

De la même manière que nous avons ajouté notre méta de publication lors de l'insertion de nouvelles publications, nous le ferons à l'intérieur de notre modèle de modification, ajoutez donc le code suivant:

 if ($ post_id) // Meta à jour la méta personnalisée update_post_meta ($ post_id, 'vsip_custom_one', esc_attr (strip_tags ($ _ POST ['customMetaOne']))); update_post_meta ($ post_id, 'vsip_custom_two', esc_attr (strip_tags ($ _ POST ['customMetaTwo']))); // Redirige wp_redirect (home_url ()); sortie; 

C'est tout! Nous l'avons fait! Nous sommes maintenant en mesure de créer une méta-boîte personnalisée, d'insérer une méta avec le post d'insertion via le serveur frontal et d'éditer la méta via un serveur frontal.


Conclusion

C'est la partie 3 terminée, vous l'avez fait! Bien fait, vous êtes maintenant capable d'insérer des publications, de les éditer et de les supprimer via le serveur frontal, ainsi que de gérer les méta personnalisées que vous avez..

C'est la fin de cette série sur la publication via le Front End, et je suis heureux que vous soyez resté avec moi pendant que nous traversions notre parcours..

Je tiens à vous remercier énormément d'avoir pris le temps de lire mes tutoriels. J'espère que cela vous a aidé. N'hésitez pas à laisser des commentaires et je ferai de mon mieux pour vous aider et y répondre. Vous pouvez toujours me contacter directement via mon site Web: www.VinnySingh.co ou Twitter @VinnySinghUK.