Detașarea prin frontul frontal trimitere avansată

Astăzi, vom continua cu mini-seria noastră cu privire la inserarea posturilor prin capătul frontal, dar în această parte vom examina exclusiv modul de gestionare a câmpurilor meta personalizate pe care le-am putea avea în cadrul tipului nostru de post. Deci, să ne pregătim și să începem!


Introducere

Suntem acum în partea a treia a mini-seriei noastre și, dacă nu ați citit celelalte două părți, atunci vă sfătuiesc să faceți acest lucru, deoarece vom lua din locul unde am rămas. Obiectivul nostru după finalizarea acestei mini-serii ar trebui să permită utilizatorului să trimită mesaje prin intermediul front-end-ului, împreună cu editarea și trimiterea mesajului în coșul de gunoi; toate fără a fi pe tabloul de bord WordPress. Aceste metode pot fi utilizate atât în ​​tematică, cât și în plugin și pot fi foarte adaptabile pentru a obține observații foarte avansate și complexe.

Demo-ul și fișierele de descărcare sunt o temă dezbrăcată care a fost creată doar pentru scopurile acestui tutorial.

Deci, deschideți editorul dvs. preferat de text și să începem!


Pasul 1 Introducerea metalei personalizate

Să începem mai întâi să creăm un dosar numit include, în acest dosar vom crea un fișier numit post-meta.php. Vom crea o casetă de meta personalizată în interiorul acestui fișier. Voi trece prin asta destul de repede, dar dacă vreți să citiți despre toate minunile pe care le puteți realiza cu casetele de meta personalizate, Tammy Hart a scris o serie uimitoare de tutori numită Reusable Custom Meta Boxes.

În interiorul nostru post-meta.php, vom crea un prefix pentru a ne asigura că avem un identificator unic pentru toate câmpurile noastre, de asemenea, vom începe prin crearea unui tablou care să conțină toate informațiile noastre pentru a crea o casetă de metode personalizate. Următorul cod este pentru crearea unui ID pentru caseta meta personalizată, setarea unui titlu, unde va apărea caseta meta (tipul postului) și câmpurile pe care le va avea:

 // câmpul array $ prefix = 'vsip_'; $ vsip_post_meta_box = array ('id' => 'vsip-post-meta-box', 'title' => __ ('Custom Meta', ' > 'normal', 'prioritate' => 'mare', 'câmpuri' => array (' Introduceți meta personalizat 1 ',' cadru '),' id '=> $ prefix.'custom_one', 'type' => 'text' 'cadru'), 'desc' => __ ('Introduceți meta personalizat 2', 'cadru'), 'id' => $ prefix.'custom_two ',' type '=>' text ');));

Apoi, vom crea o casetă de meta și vom face acest lucru creând o funcție. În cadrul acestei funcții vom folosi funcția WordPress: add_meta_box.

Următorul cod afișează modul în care am creat meta-caseta, împreună cu utilizarea cârligului de acțiune add_meta_boxes:

 / / Custom Meta Box add_action ('add_meta_boxes', 'vsip_project_add_meta'); funcția 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 ['context'], $ vsip_post_meta_box ['prioritate']);  // END OF Function: vsip_project_add_meta

Acum că am creat meta-caseta noastră, împreună cu toate câmpurile setate cu informațiile pe care le dorim să le stocăm, trebuie să afișăm meta-caseta noastră. Facem acest lucru creând o altă funcție cu același nume ca al treilea parametru în cadrul nostru add_meta_box funcţie. În cazul nostru, vom crea o funcție numită: vsip_display_post_meta.

Următorul cod primește fiecare câmp din interiorul matricei noastre care deține toate informațiile noastre și verifică tipul de câmp este și transmite tipul corect de câmp:

 funcția vsip_display_post_meta () global $ vsip_post_meta_box, $ post; // Utilizați nonce pentru verificarea ecoului '„; echo "„; foreach ($ vsip_post_meta_box ['fields'] ca câmp $) // obține meta date postate curent $ meta = get_post_meta ($ post-> ID, $ field ['id'], true); comutare (câmpul $ ['type']) // Dacă textul "text": echo '","","
„; echo "„; pauză; echo '
„; // END of Function: vsip_display_post_meta

Am creat meta-caseta personalizată și am afișat conținutul acesteia, tot ce am lăsat este să salvați datele după ce utilizatorul a introdus conținut pentru câmpuri. Facem acest lucru creând o funcție finală care ne va salva corect datele. Codul este după cum urmează:

 // salvați datele Meta add_action ('save_post', 'vsip_post_save_data'); funcția vsip_post_save_data ($ post_id) global $ vsip_post_meta_box; // verificați nonce dacă (! isset ($ _ POST ['vsip_meta_box_nonce']) ||! wp_verify_nonce ($ _ POST ['vsip_meta_box_nonce']) return $ post_id;  // verificați salvarea automată dacă (definită ('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $ post_id;  // verificați permisiunile dacă ('page' == $ _POST ['post_type']) if (! current_user_can ('edit_page', $ post_id)) return $ post_id;  elseif (! current_user_can ('edit_post', $ post_id)) returnați $ post_id;  foreach ($ vsip_post_meta_box ['fields'] ca câmp de $) $ old = get_post_meta ($ post_id, $ field ['id'], true); $ new = $ _POST [câmpul $ ['id']]; dacă ($ new && $ new! = $ old) update_post_meta ($ post_id, $ field ['id'], $ new);  elseif ("== $ new && $ vechi) delete_post_meta ($ post_id, $ field ['id'], $ vechi); END of Function: vsip_post_save_data

Bine, știu că am trecut prin asta foarte rapid, dar accentul acestui tutorial este cum să gestionăm meta personalizat prin capătul din față. Acum că totul este în afara și avem setul de meta-uri personalizat creat în postările noastre, vom continua să introducem câmpurile în postul nostru de inserare și să editați câmpurile meta personalizate.


Pasul 2 Editarea mesajelor noastre introductive

Vom edita pagina noastră cu mesaje de inserare pentru a compensa noile câmpuri personalizate noi. Hai să ne deschidem șablon-insert-posts.php și introduceți câteva câmpuri suplimentare. Deoarece câmpurile meta personalizate sunt câmpuri de text, vom introduce două câmpuri suplimentare de introducere a textului în formularul nostru, după cum urmează:

 

Trebuie să avem așa ceva atunci când utilizatorul dă clic pe "Trimite", va introduce informațiile meta personalizate în câmpurile corespunzătoare. Pentru aceasta, trebuie să folosim funcția WordPress: update_post_meta, ceea ce face această funcție ne permite să actualizăm posta meta și putem actualiza post meta după ce am creat o postare și avem un ID.

Deci, vom merge acolo unde folosim funcția: wp_insert_post și chiar deasupra liniei noastre de redirecționare este locul în care vom introduce meta personalizat.

Următorul cod face testul nostru pentru a verifica dacă am creat o postare și apoi vom folosi update_post_meta funcționează și trece POST_ID la această funcție, împreună cu ID-ul câmpului pe care dorim să îl actualizăm și, în final, valoarea din formularul pe care îl vom afișa în caseta meta:

 dacă ($ post_id) // Actualizați Meta personalizată 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']))); // Redirecționare wp_redirect (home_url ()); Ieșire; 

Asta e! Am creat o casetă de metadate personalizată și am actualizat formularul nostru de inserare pentru a vă asigura că vizăm aceste câmpuri și că acestea sunt salvate corect. Apoi, vom trece pe modul de editare a meta personalizate.


Pasul 3 Modificarea meta-ului nostru personalizat

Acum trebuie să putem edita meta personalizat prin capătul din față, așa că vom începe prin deschiderea noastră șablon-edit-posts.php și introducerea celor două noi câmpuri de intrare pe care le-am adăugat la formularul nostru de inserare:

 

Apoi, trebuie să preluăm meta postului personalizat al postării specifice, ceea ce facem prin utilizarea funcției WordPress: get_post_meta în interiorul bucla noastră WordPress. Derulați până la locul în care avem Loop-ul WordPress și introduceți următorul cod de mai jos de unde primim informațiile despre titlul și conținutul nostru.

 $ custom_one = get_post_meta ($ actual_post, 'vsip_custom_one', true); $ custom_two = get_post_meta ($ curentă_post, 'vsip_custom_two', true);

Acum, când avem informațiile despre meta posta personalizată, vom extrage acum valorile acestei date în câmpurile de intrare ale formularului nostru. Următorul cod este versiunea actualizată a celor două câmpuri meta personalizate pe care le-am inserat:

 

După cum puteți vedea din codul pe care tocmai l-am introdus, valorile pentru ambele intrări sunt variabilele meta personalizate pe care le-am creat în Loopul WordPress, poate că ați observat că ar putea scoate câmpurile noastre, dar atunci când facem modificări nu există sunt făcute actualizări. Acest lucru se datorează faptului că nu am introdus codul pentru a actualiza postarea odată ce utilizatorul a dat clic pe actualizare.

În același mod în care am adăugat postarea noastră meta atunci când inserăm postări noi, vom face acest lucru în interiorul șablonului nostru de editare, deci adăugați următorul cod:

 dacă ($ post_id) // Actualizați Meta personalizată 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']))); // Redirecționare wp_redirect (home_url ()); Ieșire; 

Asta e! Am facut-o! Acum suntem capabili să creăm o meta cutie personalizată, inserați meta cu postul inserat prin capătul frontal împreună cu editarea meta-ului prin capătul din față.


Concluzie

Aceasta este o parte 3 completă, ați făcut-o! Bine, acum sunteți capabil de a introduce postări, de a edita și de a șterge mesaje prin intermediul front-end-ului, împreună cu manipularea oricărei meta personalizate pe care o aveți.

Acesta este sfârșitul acestei serii privind postarea prin Front End și mă bucur că ați rămas cu mine în timpul călătoriei noastre.

Aș dori să vă spun o mulțime vă mulțumesc că ați petrecut timp pentru a citi seria tutorial meu, sper că a ajutat. Vă rugăm să nu ezitați să lăsați comentarii și voi încerca să vă ajut și să le răspund. Puteți să mă contactați întotdeauna direct prin site-ul meu: www.VinnySingh.co sau Twitter @VinnySinghUK.

Cod