Crearea unei secțiuni de întrebări frecvente pentru site-ul dvs. WordPress este incredibil de simplă. Vom folosi WordPress Custom Post Types pentru întrebări și răspunsuri. Apoi vom folosi un acordeon jQuery UI pentru a face un frumos widget acordeon încrucișat în browser. În cele din urmă, vom atribui un cod scurt, astfel încât să putem pune întrebările frecvente pe orice pagină sau postare.
Vom crea acest lucru:
În tine functions.php (aflat în directorul rădăcină al temei) - includeți faq.php fișierul pe care l-ați creat în partea de sus.
/ * funcții.php * / include ('faq / faq.php');
init
acțiune. Folosim o funcție anonimă ca al doilea parametru pentru a păstra totul încapsulat într-un singur loc. Acest lucru ajută la lizibilitatea și mentenabilitatea.$ etichete
și $ args
după cum se vede mai jos.register_post_type ('FAQ', $ args)
titlu
câmpul pentru întrebare și câmpul de conținut principal al răspunsului. Acest lucru ne permite să introduceți orice tip de conținut în răspunsul nostru (cum ar fi imagini și videoclipuri), precum și textul./ * Înregistrează tipul de post particularizat * / / * faq.php * / add_action ('init', funcția () $ labels = array ('name' => 'add_new' => _x ('Întrebare'), 'add_new_item' => __ ("Adăugați o nouă întrebare") , 'new_item' => __ ('Noua întrebare'), 'all_items' => __ ('Întrebări frecvente' "Not_found" => __ ("Nu găsiți întrebări frecvente"), "not_found_in_trash" => __ ("Nu găsiți întrebări frecvente în coșul de gunoi"), "parent_item_colon" => "," nume_menu "=> 'Întrebări frecvente'); $ args = array ('etichete' => etichete $, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu '=> true,' query_var '=> true,' rewrite '=> true,' capability_type '=>' post ',' has_archive '=> true,' hierarchical '=> false, suporta '=> array (' title ',' editor ',' page-attributes ');) register_post_type (' FAQ ', $ args););
add_action ('wp_enqueue_scripts', 'wptuts_enqueue'); funcția wptuts_enqueue () wp_register_style ('wptuts-jquery-ui-style', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/themes/south-street/jquery-ui.css' ); wp_enqueue_style ( 'wptuts-ui stil jQuery'); "wpt_register_script ('wptuts-custom-js', get_template_directory_uri () '/faq/faq.js', 'jquery-ui-accordion', true);
Veți observa că am folosit doar unul
wp_enqueue_script
apel, deoarece este important ca fișierele JavaScript să fie încărcate în ordine deoarece sunt dependente una de cealaltă. reglajjquery-ui-acordeon
ca o dependență asigură acest lucru.
Pentru că vrem să putem pune Accordionul nostru cu întrebări frecvente pe orice pagină / post, vom genera un scurtcod. Folosirea unui shortcode înseamnă că trebuie doar să tastăm [FAQ]
în orice post / pagină din Editorul WordPress pentru a afișa întrebările noastre frecvente.
add_shortcode ('faq', funcția () return "Test de cod scurt";);
Putem obține datele din tipul nostru de post personalizat folosind get_posts ()
funcţie.
numberposts
- Aici puteți limita câte întrebări cu întrebări frecvente sunt preluateorderby
și Ordin
- Ne permite să schimbăm ordinea întrebărilorpost_type
- Acesta este modul în care îi spunem lui WordPress să ne aducă doar tipul de post personalizatadd_shortcode ('faq', funcția () $ posturi = get_posts (array ('numberposts' => 10, 'orderby' => 'menu_order', 'order' => )); // array de obiecte returnate);
/ * exemplu * / echo $ posturi [0] -> post_content; // va scoate răspunsul de la prima întrebare faq.
Acesta este marcajul necesar pentru jordanul jQuery:
Întrebarea va merge aici
Răspunsul va fi în acest div.
Putem genera acest lucru prin looping peste posturi $
mulțime.
$ faq
pentru a stoca începutul HTML - ne deschidem o div
cu un id de wptuts-acordeon
sprintf
la $ faq
variabil.sprintf
voi inlocui % 1 $ s
cu valoarea recuperată de la $ Post-> POST_TITLE
și % 2 $ s
cu valoarea returnată de la $ Post-> POST_CONTENT
$ Post-> POST_CONTENT
prin wpautop ()
pentru a vă asigura că acesta este afișat așa cum a fost scris în zona de administrare.div
și întoarcere $ faq
pentru a scoate codul HTML pe pagina noastră.$ faq = '„; // containerul, înainte de buclă foreach ($ postări ca $ post) $ faq. = sprintf (('„; // finalizează închiderea recipientului retur $ faq;% 1 $ s
% 2 $ s'), $ post-> post_title, wpautop ($ post-> post_content)); $ faq. = '
add_shortcode ('faq', function () $ posturi = get_posts (array (// Obțineți tipul de postare personalizată FAQ 'numberposts' => 10, 'orderby' => 'menu_order', 'order' => 'post_type' => 'faq',)); $ faq = '„; // Deschiderea foreach-ului containerului ($ posturi ca $ post) // Generarea marcajului pentru fiecare intrebare $ faq. = Sprintf (('„; // Închideți returul recipientului $ faq; // Returnați codul HTML. );% 1 $ s
% 2 $ s'), $ post-> post_title, wpautop ($ post-> post_content)); $ faq. = '
Pfiu! Dacă ai ajuns atât de departe, bine făcut - ești aproape! În momentul de față am reușit să scoatem toate datele necesare pentru acordeon, tot ce a mai rămas să facem este să plasăm acest lucru faq.js:
(funcția () jQuery ("# wptuts-acordeon"). acordeon ();) ();