Pubblicare tramite Front End Invio avanzato

Oggi continueremo con la nostra mini-serie sull'inserimento di post tramite il front-end, ma in questa parte esamineremo esclusivamente come gestire i metadati personalizzati che potremmo avere nel nostro tipo di post. Quindi, prepariamoci e cominciamo!


introduzione

Ora siamo nella terza parte della nostra mini serie, e se non hai letto le altre due parti, ti consiglio di farlo perché riprendiamo da dove avevamo lasciato. Il nostro obiettivo dopo aver completato questa mini serie dovrebbe consentire all'utente di inviare post tramite il front-end, insieme alla modifica e all'invio del post nel cestino; tutto senza essere sulla Dashboard di WordPress. Questi metodi possono essere utilizzati sia in un tema che in un plug-in ed essere molto adattabili per ottenere presentazioni molto avanzate e complesse.

La demo e i file di download sono un tema ridotto che è stato creato per gli scopi di questo tutorial.

Quindi apri il tuo editor di testo preferito e cominciamo!


Passaggio 1 Inserimento di Meta box personalizzata

Iniziamo con la creazione di una cartella chiamata includere, in questa cartella creeremo un file chiamato post-meta.php. Creeremo la nostra meta-box personalizzata all'interno di questo file. Ne parlerò abbastanza velocemente, ma se vuoi leggere tutte le meraviglie che puoi ottenere con i meta box personalizzati, Tammy Hart ha scritto una serie di tutorial stupefacenti denominata Riquadri personalizzati riutilizzabili.

Dentro il nostro post-meta.php, creeremo un prefisso per assicurarci di avere un identificatore univoco per tutti i nostri campi, inoltre inizieremo creando un array per contenere tutte le nostre informazioni per creare una meta box personalizzata. Il codice seguente è per la creazione di un ID per la meta-box personalizzata, l'impostazione di un titolo, dove verrà visualizzata la meta-box (che tipo di messaggio) e i campi che avrà:

 // Field Array $ prefix = 'vsip_'; $ vsip_post_meta_box = array ('id' => 'vsip-post-meta-box', 'title' => __ ('Meta personalizzata', 'framework'), 'page' => 'post', 'context' = > 'normal', 'priority' => 'high', 'fields' => array (array ('name' => __ ('Custom Input One:', 'framework'), 'desc' => __ (' Inserisci il tuo meta 1 personalizzato, 'framework'), 'id' => $ prefix.'custom_one ',' type '=>' text '), array (' name '=> __ (' Custom Input Two: ', 'framework'), 'desc' => __ ('Inserisci la tua meta 2 personalizzata', 'framework'), 'id' => $ prefix.'custom_two ',' type '=>' text '),));

Successivamente, creeremo la nostra meta-box e lo facciamo creando una funzione. All'interno di questa funzione useremo la funzione WordPress: add_meta_box.

Il codice seguente mostra come abbiamo creato la nostra meta-box, insieme all'utilizzo del hook di azione add_meta_boxes:

 // Metabox personalizzata add_action ('add_meta_boxes', 'vsip_project_add_meta'); function 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 ['pagina'], $ vsip_post_meta_box ['context'], $ vsip_post_meta_box ['priority']);  // END OF Function: vsip_project_add_meta

Ora che abbiamo creato la nostra meta-box, insieme con tutti i campi impostati con le informazioni che vogliamo memorizzare, dobbiamo mostrare la nostra meta-scatola. Lo facciamo creando un'altra funzione con lo stesso nome del nostro terzo parametro nel nostro add_meta_box funzione. Nel nostro caso, creiamo una funzione chiamata: vsip_display_post_meta.

Il codice seguente ottiene ogni campo all'interno del nostro array che contiene tutte le nostre informazioni e controlla il tipo di campo che è e restituisce il tipo di campo corretto:

 function vsip_display_post_meta () global $ vsip_post_meta_box, $ post; // Usa nonce per la verifica echo ''; eco ''; foreach ($ vsip_post_meta_box ['fields'] come $ campo) // richiama i metadati del post corrente $ meta = get_post_meta ($ post-> ID, $ campo ['id'], vero); switch ($ field ['type']) // If Text case 'text': echo '','','
'; eco ''; rompere; eco '
'; // END Of Function: vsip_display_post_meta

Abbiamo creato la nostra meta box personalizzata e visualizzato il suo contenuto, tutto ciò che resta da fare è salvare i dati una volta che l'utente ha inserito il contenuto per i campi. Lo facciamo creando una funzione finale che salverà i nostri dati correttamente. Il codice è il seguente:

 // Salva i metadati add_action ('save_post', 'vsip_post_save_data'); function vsip_post_save_data ($ post_id) global $ vsip_post_meta_box; // verifica nonce if (! isset ($ _ POST ['vsip_meta_box_nonce']) ||! wp_verify_nonce ($ _ POST ['vsip_meta_box_nonce'], basename (__ FILE__))) return $ post_id;  // controlla il salvataggio automatico se (definito ('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $ post_id;  // controlla i permessi se ('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 ['fields'] come $ campo) $ old = get_post_meta ($ post_id, $ campo ['id'], vero); $ nuovo = $ _POST [$ campo ['id']]; se ($ nuovo && $ nuovo! = $ vecchio) update_post_meta ($ post_id, $ campo ['id'], $ nuovo);  elseif ("== $ new && $ old) delete_post_meta ($ post_id, $ campo ['id'], $ vecchio); // END di funzione: vsip_post_save_data

Ok, so che l'abbiamo affrontato molto velocemente ma il focus di questo tutorial è come gestire la meta personalizzata tramite il front-end. Ora che è tutto fuori mano e abbiamo la nostra meta box personalizzata impostata nei nostri post, continueremo a inserire i campi nel nostro post di inserimento e a modificare i metadati personalizzati.


Passaggio 2 Modifica dei nostri post di inserimento

Modificheremo la nostra pagina degli inserti per compensare i nostri campi personalizzati aggiunti di recente. Andiamo e apriamo il nostro template-insert-posts.php e inserire alcuni campi aggiuntivi. Poiché i nostri metadati personalizzati sono campi di testo, inseriremo due campi di input di testo aggiuntivi nel nostro modulo, come segue:

 

È necessario che sia così quando l'utente fa clic su "Invia", inserirà le meta informazioni personalizzate nei campi appropriati. Per fare questo, abbiamo bisogno di utilizzare la funzione WordPress: update_post_meta, ciò che questa funzione fa ci permette di aggiornare il post meta, e possiamo solo aggiornare il post meta una volta creato un post e avere un ID.

Quindi, andremo dove stiamo usando la funzione: wp_insert_post e appena sopra il nostro link di reindirizzamento è dove inseriremo la nostra meta personalizzata.

Il seguente codice fa il nostro test per verificare se abbiamo creato un post, e quindi usiamo il update_post_meta funzione e passare il post_id a questa funzione, insieme all'ID del campo che vogliamo aggiornare, e infine il valore dal nostro modulo che pubblicheremo nella meta-box:

 if ($ post_id) // Aggiorna Meta personalizzata 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']))); // Reindirizza wp_redirect (home_url ()); Uscita; 

Questo è tutto! Abbiamo creato una meta box personalizzata e abbiamo aggiornato il modulo di inserimento degli inserti per assicurarci di indirizzare questi campi e di salvarli correttamente. Successivamente, ci sposteremo su come modificare la nostra meta personalizzata.


Passaggio 3 Modifica della nostra meta personalizzata

Ora dobbiamo essere in grado di modificare la meta personalizzata tramite il front-end, quindi inizieremo aprendo la nostra template-edit-posts.php e inserendo i nostri due nuovi campi di input che abbiamo aggiunto al nostro modulo di inserimento post:

 

Successivamente, dobbiamo recuperare il nostro post personalizzato meta del post specifico, lo facciamo usando la funzione WordPress: get_post_meta all'interno del nostro ciclo WordPress. Scorri fino a dove abbiamo il nostro WordPress Loop e inserisci il seguente codice appena sotto dove abbiamo ottenuto le informazioni per il nostro titolo e il contenuto.

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

Ora che disponiamo delle informazioni del meta post personalizzato, ora forniremo i valori di questo nei nostri campi di input del nostro modulo. Il seguente codice è la versione aggiornata dei due metadati personalizzati che abbiamo inserito:

 

Come puoi vedere dal codice appena inserito, i valori di entrambi i nostri input sono le variabili del nostro meta personalizzato che abbiamo creato nel nostro ciclo WordPress, potresti aver notato che potrebbe emettere i nostri campi ma quando apportiamo modifiche non è vero gli aggiornamenti sono fatti. Questo perché non abbiamo inserito il codice per aggiornare il post una volta che l'utente ha fatto clic su Aggiorna.

Allo stesso modo abbiamo aggiunto il nostro post meta quando inseriamo nuovi post, lo faremo all'interno del nostro modello di modifica, quindi aggiungi il seguente codice:

 if ($ post_id) // Aggiorna Meta personalizzata 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']))); // Reindirizza wp_redirect (home_url ()); Uscita; 

Questo è tutto! Ce l'abbiamo fatta! Ora siamo in grado di creare una meta box personalizzata, inserire meta con il post di inserimento tramite il front-end e modificare il meta tramite il front-end.


Conclusione

Questa è la parte 3 completa, ce l'hai fatta! Ben fatto, ora sei in grado di inserire post, modificare ed eliminare post tramite il front-end, oltre a gestire qualsiasi meta personalizzata che hai.

Questa è la fine di questa serie su Pubblicazione tramite il Front End, e sono felice che tu sia rimasta con me mentre abbiamo attraversato il nostro viaggio.

Mi piacerebbe dire un ENORME grazie per aver dedicato del tempo a leggere la mia serie di tutorial, spero che sia stata di aiuto. Non esitate a lasciare commenti e farò del mio meglio per aiutarli e rispondervi. Puoi sempre contattarmi direttamente attraverso il mio sito web: www.VinnySingh.co o Twitter @VinnySinghUK.