Pe multe dintre site-urile client pe care le construiesc, găsesc că sunt momente în care trebuie să includ o înregistrare a postărilor pe o pagină. Nu vorbesc despre paginile de arhivă aici, ci despre adăugarea unei înregistrări personalizate la o pagină statică existentă.
De exemplu, aș putea să menționez câteva postări pe pagina Despre, sau site-ul poate necesita o pagină detaliată pentru un subiect, cu o listă de postări și tipuri personalizate de postări legate de acel subiect.
O modalitate de a face acest lucru este crearea unui șablon de pagină personalizat care să includă conținutul curent al paginii și rezultatele unei alte interogări personalizate, dar dacă doriți mai multă flexibilitate în modul în care listați postările sau doriți doar să faceți acest lucru de câteva ori, shortcode va fi o soluție mai simplă.
În acest tutorial, vă vom arăta cum să creați un scurt cod simplu pentru a lista toate postările unui tip de post particularizat și apoi voi extinde pe acesta pentru a crea un shortcode cu diferiți parametri pe care utilizatorii le pot specifica pentru a afișa postările oricum doresc.
Veți avea nevoie de următoarele resurse:
Veți găsi tot codul pentru a crea acest plugin în descărcarea de cod.
Înainte de a configura codul scurt, va trebui să înregistrați un tip de post personalizat și două taxonomii personalizate, pe care le vom folosi pentru a testa codul scurt.
Codul pentru a face acest lucru este conținut în pluginul pe care l-am scris pentru codul scurt, deși într-un proiect live, aș recomanda separarea acestui lucru de pluginul de cod scurt.
Creați un fișier nou în dosarul pluginurilor și apelați-l post-listare-shortcode.php.
Adăugați codul de mai jos în fișier.
Notă: Crearea tipurilor de posturi și a taxonomiilor personalizate nu este esențială pentru învățarea din acest tutorial. Dacă doriți, puteți copia acest cod din fișierul de descărcare și săriți peste această etapă.
'Add_new_item' => 'Adăugați un nou articol de îmbrăcăminte', 'edit_item' => 'Editați articolul de îmbrăcăminte', 'new_item' => 'Toate hainele', 'view_item' => 'Afișați articolele de îmbrăcăminte', 'search_items' => 'Haine de căutare', 'not_found' 'not_found_in_trash' => 'Nu se găsesc haine în coșul de gunoi', 'parent_item_colon' => ',' menu_name '=>' Haine ' => true, 'public' => true, 'hierarchical' => true, 'supports' => array ('title', 'editor', ' atributele '),' taxonomii '=> array (' post_tag ',' category '),' exclude_from_search '=> true,' capability_type '=>' post ')); (de exemplu, "rmcc_create_taxonomies", 0); funcția rmcc_create_taxonomies () // taxonomie culoare $ labels = array ('name' => _x ngular_name '=> _x (' Culoare ',' taxonomie singular name '),' search_items '=> __ (' Culori de căutare '),' all_items '=> "Culoare părinte"), 'parent_item_colon' => __ ('Culoare părinte:'), 'edit_item' => __ ('Edit_color'), 'update_item' => > __ ("Adăugați o nouă culoare"), "new_item_name" => __ ("Noua culoare"), "nume_menu" => __ ("Culori");); register_taxonomy ('color', 'haine', array ('hierarchical' => true, 'labels' => etichete $, 'query_var' => true, 'rewrite' => true, 'show_admin_column' => true)); // taxonomy pentru țesături $ labels = array ('name' => _x ('Fabrics', 'taxonomy general name'), 'singular_name' => __ ('Fabrics de căutare'), 'all_items' => __ ('Toate Fabric'), 'parent_item' => '=> __ (' Edit Fabric '),' update_item '=> __ (' Fabric Update '),' add_new_item '=> , 'nume_meniu' => __ ("Țesături"),); register_taxonomy ('fabric', 'haine', array ('hierarchical' => true, 'labels' => etichete $, 'query_var' => true, 'rewrite' => true, 'show_admin_column' => true)); ?>
Acest lucru spune WordPress despre plugin-ul și înregistrează postul personalizat "haine" și cele două taxonomii, "color" și "fabrică".
Salvați acest plugin și activați-l prin pagina Plugin-uri în WordPress.
Acum aveți tipul de post personalizat și taxonomiile în loc, creați câteva postări care le utilizează. În captura de ecran de mai jos puteți vedea conținutul pe care l-am creat:
Dacă doriți doar să listați conținutul într-un singur mod folosind codul dvs. scurt, puteți crea un shortcode foarte simplu, care nu utilizează parametrii.
Deschideți din nou fișierul plugin și adăugați următoarele:
// creați coduri scurte pentru a afișa toate hainele care apar în albastru add_shortcode ('list-posts-basic', 'rmcc_post_listing_shortcode1'); funcția rmcc_post_listing_shortcode1 ($ atts) ob_start (); $ query = noi WP_Query (array ('post_type' => 'haine', 'color' => 'blue', 'posts_per_page' => ',)); dacă ($ query-> have_posts ()) ?>
Acest lucru creează un scurt cod simplu, folosind WP_Query
pentru a rula o interogare particularizată asupra conținutului dvs. și pentru a afișa rezultatele într-o listă. Când scriu [lista-posturi-bază]
într-o pagină rezultatele sunt așa cum se arată în această captură de ecran:
Codul scurt va fi mult mai util dacă utilizatorii își pot adăuga parametrii proprii, alegând de exemplu:
Pentru a adăuga acest lucru la codul scurt, utilizați shortcode_atts ()
, care vă permite să specificați anumite atribute implicite pe care utilizatorii le pot suprascrie.
Încă o dată în fișierul plugin și sub codul primului cod scurt, adăugați următoarele:
// creați coduri scurte cu parametri, astfel încât utilizatorul să poată defini ce se întreabă - implicit este lista tuturor postărilor de blog add_shortcode ('list-posts', 'rmcc_post_listing_parameters_shortcode'); funcția rmcc_post_listing_parameters_shortcode ($ atts) ob_start (); // definește atributele și extrasele implicite (shortcode_atts (array ('type' => 'post', 'order' => 'date', 'orderby' => 'title', 'posts' => '//' defineste parametrii de interogare pe baza atributelor $ options = array ('post_type' => type $, 'order' = ' => $ comanda, 'orderby' => $ orderby, 'posts_per_page' => $ posturi, 'color' => $ color, 'fabric' => $ fabric, 'category_name' => $ category,); ($ query-> have_posts ()) ?> WP_Query ($ opțiuni); // executați buclă pe baza interogării dacă ($ query-> have_posts ()
Notă: Utilizarea ob_start ()
și ob_get_clean ()
se asigură că buclă este ieșită în locul din pagina dvs. sau postați că ați adăugat codul scurt. Dacă nu le adăugați, lista va fi afișată în partea de sus a conținutului.
În mod implicit, aceasta afișează toate postările în ordine descrescătoare a datei, deci dacă tastați [lista-posturi]
într-o pagină sau postare, rezultatul este ca în această captură de ecran:
Cu toate acestea, dacă adăugați niște parametri, lucrurile devin mai interesante. De exemplu, pentru a lista toate hainele care vin în culoarea neagră, tastez [list-posts type = "haine" color = "negru" orderby = "nume" comanda = "ASC"]
:
Sau pentru a lista toate hainele din categoria "inteligentă" pe care o tip [list-posts type = "haine" category = "smart" orderby = "nume" comanda = "ASC"]
:
Dacă aveți nevoie, puteți specifica mai multe atribute cu care pot lucra utilizatorii, dar trebuie să includeți toate cele disponibile în plugin-ul dvs., în extract (shortcode_atts))
funcţie.
Nu trebuie să specificați o valoare implicită pentru toate acestea - de exemplu, am lăsat în exemplul respectiv parametrii categoriei și taxonomiei goale. Parametrii pe care îi puteți defini sunt oricare dintre cele pentru care se poate specifica WP_Query
- pentru o listă completă, consultați pagina Codex.
Fiind capabil să inserați o listare post într-o pagină sau o postare poate fi foarte utilă. Aceasta vă salvează să modificați fișierele șablonului sau să scrieți un șablon de pagină personalizat.
Codul scurt pe care l-ați învățat cum să creați în acest plugin ar putea fi folosit în mai multe moduri și, bineînțeles, ați putea schimba cu ușurință ce este afișat prin codul scurt - exemplul meu scoate o listă cu titluri cu titluri postate într-un link către pagina lor, dar puteți înlocui codul din interiorul bucla cu etichetele șablonului pentru a afișa conținutul, imaginile recomandate sau orice altceva.
Unele resurse utile pentru subiectele de mai sus: