Recent am lucrat cu un client de-al meu, care lucrează ca consultant profesionist în aria sa de lucru. Ea a întrebat dacă pot implementa un sistem Q & A sau o pagină de întrebări frecvente. I-am spus: "Sigur, putem să creăm o pagină și să lipim întrebările și răspunsurile acolo cu stil diferit", dar ea a spus că va crea pagini diferite și va clasifica întrebările și răspunsurile, și pentru a fi mai organizată, avea nevoie de o abordare diferită.
În acest scop, vă voi arăta cum am tratat solicitările ei cu câteva linii simple de cod folosind tipuri personalizate de posturi, taxonomii și coduri scurte.
Ce avem nevoie pentru a construi un sistem de întrebări frecvente?
Să începem prin crearea tipului de post personalizat.
Bineînțeles, vom începe să creăm un tip de post personalizat pentru elementele noastre de întrebări frecvente. Vom crea un nou tip de post personalizat cu ajutorul funcției register_post_type ()
dar dacă doriți un GUI pentru crearea tipului dvs. de postare, îl puteți genera cu instrumentul generatorului de tip GenerateWP, așa cum am făcut în acest exemplu:
_x ('Întrebări frecvente', 'Tip de post general', 'tuts_faq'), 'singular_name' => _x ',' tutu_faq '),' view_item '=> __ (' Parent Item ',' tuts_faq '),' all_items ' "Add_new" => __ ("Adăugați noi", "tuts_faq"), "edit_item" => __ ("Articol de căutare", "tuts_faq"), "update_item" => __ ("Articol actualizat", "tuts_faq" > __ ("Nu a fost găsit", "tuts_faq"), "not_found_in_trash" => __ ("Nu este găsit în coșul de gunoi", "tuts_faq");); $ args = array (// utilizați etichetele de mai sus 'etichete' => etichete $, // vom avea nevoie doar de titlul, editorul Visual și câmpurile extras pentru tipul nostru de post "suport" => , "editor", "excerpt"), // vom crea această taxonomie în următoarea secțiune, dar trebuie să conectăm tipul nostru de post la acesta acum 'taxonomies' => array ('tuts_faq_tax' / a face public, pentru a putea fi văzut în panoul de administrare și să-l afișăm în front-end 'public' => true, // să afișeze elementul de meniu de sub elementul Pages 'menu_position' => 20, // show archives, dacă nu aveți nevoie de codul scurt 'has_archive' => true,); register_post_type ('tuts_faq', $ args); // introduceți în acțiunea 'init' add_action ('init', 'tuts_faq_cpt', 0); ?>
Bacsis: Dacă proiectul dvs. va implica mai multe tipuri de posturi personalizate, care pot fi mai complexe decât acest tip de post simplu, vă pot sugera un instrument răcoros numit SuperCPT, care vă permite să creați noi tipuri de posturi cu un cod chiar mai simplu. Am scris un tutorial despre SuperCPT, de asemenea, puteți verifica aici.
Pentru a separa diferite tipuri de întrebări (cum ar fi întrebările clientului meu și răspunsurile despre avortul spontan și depresia postpartum), vom avea nevoie de un sistem de categorii. După cum mulți dintre voi știți deja, WordPress oferă această funcție cu taxonomii personalizate.
Funcția esențială aici este register_taxonomy ()
dar din nou, puteți utiliza instrumentul generatorului de taxonomii GenerateWP dacă aveți nevoie de o interfață grafică.
Iată codul:
_x ('Categorii de întrebări frecvente', 'Taxonomy General Name', 'tuts_faq'), 'singular_name' => Categorii ',' tuts_faq '),' all_items '=> __ (' Toate pisicile frecvente ',' tuts_faq '),' parent_item '=> __ ('FAQ New Cat', 'tuts_faq'), 'add_new_item' => __ ('Adăugați noi întrebări Cat', 'tuts_faq' 'edit_item' => __ ('Modificați întrebările de tip cat', 'tuts_faq'), 'update_item' => 'tuts_faq '),' search_items '=> __ (' Căutați elemente ',' tuts_faq '),' add_or_remove_items '=> din cele mai utilizate elemente, "tuts_faq"), "not_found" => __ ("Nu a fost găsit", "tuts_faq")); $ args = array (// utilizați etichetele de mai sus 'etichete' => etichete $, // taxonomia ar trebui să fie ierarhică, astfel încât să o putem afișa ca o secțiune de categorie 'ierarhică' => true, // din nou, ca tipul postului) 'public' => true,); // conținutul matricei de mai jos specifică tipurile de posturi care ar trebui să fie legate de taxonomie cu register_taxonomy ('tuts_faq_tax', array ('tuts_faq'), $ args); // introduceți în acțiunea 'init' add_action ('init', 'tuts_faq_tax', 0); ?>
Asta e! Acum aveți un tip de postare cu întrebări frecvente, cu o taxonomie numită "Categorii de întrebări frecvente" legate între ele! Verificați panoul de administrare și veți vedea elementul de meniu "Categorii de întrebări frecvente" din secțiunea "Întrebări frecvente".
La fel ca și categoriile de posturi regulate, le puteți adăuga, modifica sau elimina în pagina "Categorii de întrebări frecvente" sau puteți adăuga noi categorii în timp ce scrieți un nou articol de întâlniri frecvente.
[FAQ]
Cod scurtAici vine partea distractivă: construirea codului scurt. (Dacă ați citit postările mele anterioare, știi că sunt imens fan de coduri scurte WordPress.) În principiu, vom face ca articolele FAQ să fie încorporate în postări și pagini.
Iată ce se va întâmpla:
Să începem să construim codul scurt. Ca și codul de mai sus, voi include câteva comentarii utile:
", // atributul complet sau extras - implicit la conținutul integral 'excerpt' => 'false',), $ atts)); $ output ="; // setați argumentele interogării $ query_args = array (// arătați toate postările care se potrivesc cu această interogare 'posts_per_page' => -1, // arătați tipul postului personalizat 'tuts_faq' post_type '=>' tuts_faq ', // posturi care corespund limbajului din categoria de întrebări frecvente specificate cu atributul "tax_query" al codului de scurtă durată => array (array ('taxonomy' => 'tuts_faq_tax', 'field' => 'slug', 'terms' => , // spuneți WordPress că nu are nevoie să numere rândurile totale - acest mic truc reduce încărcarea bazei de date dacă nu aveți nevoie de paginare 'no_found_rows' => true,); // primi mesajele cu argumentele interogării $ faq_posts = get_posts ($ query_args); $ output = '„; // manipulați foreach-ul nostru cu buclă personalizată ($ faq_posts as $ post) setup_postdata ($ post); $ faq_item_title = get_the_title ($ post-> ID); $ faq_item_permalink = get_permalink ($ post-> ID); $ faq_item_content = get_the_content (); dacă ($ excerpt == 'true') $ faq_item_content = get_the_excerpt (). ''. __ ("Mai mult ...", "tuts_faq"). ''; $ output = '„; returnați outputul $; add_shortcode ('faq', 'tuts_faq_shortcode'); ?>„; $ output = '„; wp_reset_postdata (); $ output = '". $ faq_item_title. '
„; $ output = '". $ faq_item_content. '„; $ output = '
Asta e! Acum avem un scurt cod scurt pentru a ne încorpora întrebările și răspunsurile. Puteți să-l stil cu numele de clasă Tuts-faq
, Tuts-faq-item
, Tuts-faq-item-titlu
, și Tuts-faq-item-content
. Deși ar trebui să fie bine chiar dacă nu includeți stilul suplimentar.
Din moment ce acești biți de cod nu se referă doar la styling-ul front-end-ului, dar și la introducerea unor noi funcționalități, acesta este considerat ca fiind un plugin. De aceea trebuie să salvăm codul ca plugin. Și în timp ce ne aflăm la el, ar trebui să eliminăm și regulile de rescriere după activare și dezactivare.
Iată codul complet:
[FAQ] Versiune: 1.0 Autor: Barıș Ünver Autor URI: http://hub.tutsplus.com/authors/baris-unver Licență: Domeniul public * / if (! Function_exists ('tuts_faq_cpt')) // înregistrarea personalizată tip post post tuts_faq_cpt () // acestea sunt etichetele din interfața de administrare, le editați așa cum vă place $ labels = array ('name' => _x ('FAQs', 'Post Type General Name', 'tuts_faq' => _x ('Întrebări frecvente', 'tuts_faq'), 'parent_item_colon' => __ ("Element părinte:", tuts_faq '),' all_items '=> __ (' Toate articolele ',' tuts_faq '),' view_item '=> ',' add_new '=> __ (' Adăugare nouă ',' tuts_faq '),' edit_item '=> , "Not_found" => __ ("Nu a fost găsit", "tuts_faq"), Nu se găsește în coșul de gunoi "," tuts_faq ");); $ args = array (// utilizați etichetele de mai sus 'etichete' => etichete $, // vom avea nevoie doar de titlul, editorul Visual și câmpurile extras pentru tipul nostru de post "suport" => , "editor", "excerpt"), // vom crea această taxonomie în următoarea secțiune, dar trebuie să conectăm tipul nostru de post la acesta acum 'taxonomies' => array ('tuts_faq_tax' / a face public, pentru a putea fi văzut în panoul de administrare și să-l afișăm în front-end 'public' => true, // să afișeze elementul de meniu de sub elementul Pages 'menu_position' => 20, // show archives, dacă nu aveți nevoie de codul scurt 'has_archive' => true,); register_post_type ('tuts_faq', $ args); // introduceți în acțiunea 'init' add_action ('init', 'tuts_faq_cpt', 0); dacă (! function_exists ('tuts_faq_tax')) // înregistra funcția taxonomie personalizată tuts_faq_tax () // din nou, etichete pentru panoul de administrare $ labels = array ('name' => _x ("Categorii de întrebări frecvente", "tuts_faq"), "singular_name" => _x all_items '=> __ (' Întrebări frecvente pentru părinți ',' tuts_faq '),' parent_item '=> "add_new_item" => __ ('Adăugați o nouă întrebare Cat', 'tuts_faq'), 'edit_item' => __ ('Edit Întrebări frecvente Cat ',' tuts_faq '),' update_item '=> __ (' Update FAQ Cat ',' tuts_faq '),' separate_items_with_commas '=> > __ ("Elemente de căutare", "tuts_faq"), "add_or_remove_items" => __ ("Adăugați sau eliminați articole", "tuts_faq"), "choose_from_most_used" => '),' not_found '=> __ (' Nu a fost găsit ',' tuts_faq '),); $ args = array (// utilizați etichetele de mai sus 'etichete' => etichete $, // taxonomia ar trebui să fie ierarhică, astfel încât să o putem afișa ca o secțiune de categorie 'ierarhică' => true, // din nou, ca tipul postului) 'public' => true,); // conținutul matricei de mai jos specifică tipurile de posturi care ar trebui să fie legate de taxonomie cu register_taxonomy ('tuts_faq_tax', array ('tuts_faq'), $ args); // introduceți în acțiunea 'init' add_action ('init', 'tuts_faq_tax', 0); if function_exists ('tuts_faq_shortcode')) functie tuts_faq_shortcode ($ atts) extract (shortcode_atts (array (// categoria atribut slug - default la categoria '=> la întregul conținut 'excerpt' => 'false',), $ atts)); $ output = "; // setați argumentele interogării $ query_args = array (// arătați toate postările care se potrivesc cu această interogare 'posts_per_page' => -1, // arătați tipul postului personalizat 'tuts_faq' post_type '=>' tuts_faq ', // posturi care corespund limbajului din categoria de întrebări frecvente specificate cu atributul "tax_query" al codului de scurtă durată => array (array ('taxonomy' => 'tuts_faq_tax', 'field' => 'slug', 'terms' => , // spuneți WordPress că nu are nevoie să numere rândurile totale - acest mic truc reduce încărcarea bazei de date dacă nu aveți nevoie de paginare 'no_found_rows' => true,); // primi mesajele cu argumentele interogării $ faq_posts = get_posts ($ query_args); $ output = '„; // manipulați foreach-ul nostru cu buclă personalizată ($ faq_posts as $ post) setup_postdata ($ post); $ faq_item_title = get_the_title ($ post-> ID); $ faq_item_permalink = get_permalink ($ post-> ID); $ faq_item_content = get_the_content (); dacă ($ excerpt == 'true') $ faq_item_content = get_the_excerpt (). ''. __ ("Mai mult ...", "tuts_faq"). ''; $ output = '„; returnați outputul $; add_shortcode ('faq', 'tuts_faq_shortcode'); funcția tuts_faq_activate () tuts_faq_cpt (); flush_rewrite_rules (); register_activation_hook (__FILE__, 'tuts_faq_activate'); funcția tuts_faq_deactivate () flush_rewrite_rules (); register_deactivation_hook (__FILE__, 'tuts_faq_deactivate'); ?>„; $ output = '„; wp_reset_postdata (); $ output = '". $ faq_item_title. '
„; $ output = '". $ faq_item_content. '„; $ output = '
Clientul meu a fost mulțumit de rezultate când i-am arătat cum să o folosească. Dar aici, putem extinde codul cu mai multă funcționalitate, cum ar fi ...
posts_per_page
parametru în interogarea personalizată a codului nostru scurt și adăugați codul necesar pentru linkurile de paginare de sub linia cu wp_reset_postdata ();
cod. Nu uitați să eliminați 'no_found_rows' => true,
line, deși - paginarea nu va funcționa dacă nu eliminați acest lucru!posts_per_page
parametru de la -1
la 1
și adăugați o altă linie cu codul 'orderby' => 'aleator',
și ești bine să pleci!Acesta este modul în care construiți un sistem simplu de întrebări frecvente în WordPress prin utilizarea tipurilor personalizate de posturi, taxonomii personalizate și coduri scurte. Sper că vă bucurați de acest tutorial și îl puteți utiliza în următorul proiect. Nu uitați să distribuiți articolul, dacă vă place!
Aveți idei pentru a îmbunătăți acest sistem de întrebări frecvente? Trimiteți comentariile dvs. mai jos!