Afișarea tipurilor de postări personalizate – Șabloane și interogare

Publicat: 2016-09-26

Acesta este al treilea și ultimul articol al seriei noastre despre tipurile de postări personalizate (CPT). Subiectele pe care le-am discutat în primele două au fost:

  • Tipuri de postări personalizate (cum să le creați)
  • Taxonomii personalizate

În primul și al doilea articol, am înregistrat tipul de postare personalizat de mărturii și taxonomia personalizată testimonial_service . Acum trebuie să afișăm mărturiile pe site-ul nostru. Așadar, vom arunca o privire la cum să creăm un șablon pentru mărturiile noastre, cum să le interogăm și cum să le afișam oriunde pe site-ul nostru.

Șabloane de tip de postare personalizate implicit

Am creat CPT-ul nostru cu parametrul has_archive setat la true, care va afișa toate mărturiile într-o pagină de arhivă .

WordPress folosește o ierarhie de șablon pentru a afișa diferite tipuri de conținut. Pentru tipul de postare personalizat, va căuta:

arhivă-{post_type}.php
single-{post_type}.php

Dacă aceste șabloane nu sunt definite în temă, atunci va căuta șabloanele generale:

arhiva.php
singur.php

Dacă chiar și aceste șabloane nu sunt definite, atunci va fi implicit șablonul index.php .

În cazul nostru, tema Shaka are single.php , dar nu are șablonul archive.php . Aceasta înseamnă că, în mod implicit, va folosi șablonul single.php pentru pagina de mărturie unică. De asemenea, va folosi șablonul index.php pentru a afișa toate mărturiile în pagina de arhivă a mărturiilor.

Marturiile vor fi afisate in pagina arhiva marturii , care se va afla pe aceasta pagina:

http://your-domain-goes-here.com/ ?post_type=testimonials

Dacă aveți activate permalinkurile, atunci puteți accesa și pagina cu această adresă URL:

http://your-domain-goes-here.com/ mărturii

(Notă: dacă permalink-urile frumoase nu funcționează pentru tine, mergi la wp-admin -> Setări -> Permalink-uri și configurați-le, așa cum doriți și salvați setările)

În primul rând, ar trebui să scriem câteva mărturii în Testimonials CPT nou înregistrate, așa că avem câteva date de afișat. Am adăugat 3 mărturii și așa arată aspectul implicit al paginii de arhivă de mărturii pe tema noastră Shaka:

mărturii-implicit

După cum puteți vedea, aspectul este ok, dar unele dintre datele afișate nu sunt necesare, cum ar fi „după autor” și data. De asemenea, taxonomia personalizată testimonial_service nu este afișată, așa că o vom adăuga în șabloanele noastre personalizate.

Crearea de șabloane personalizate pentru CPT-ul nostru

După cum sa menționat în secțiunea anterioară, trebuie să creăm două șabloane. Arhiva-testimonials.php și single-testimonials.php . Vom crea doar șablonul archive-testimonials.php pentru acest exemplu.

Ar trebui să creăm aceste fișiere într-o temă copil, dar de dragul simplității, voi adăuga fișierul archive-testimonials.php direct în tema Shaka. Voi copia fișierul index.php, care va servi ca punct de plecare, și îl voi redenumi în archive-testimonials.php .

Am eliminat „după autor”, codul de dată și bara laterală. Am adăugat imaginile prezentate și taxonomia personalizată a serviciului de mărturii . Am folosit funcția the_terms WP care afișează o listă de termeni WP specifici, în cazul nostru taxonomia personalizată.

marturii-terminat

Știu că din punct de vedere estetic nu arată grozav, dar nu acesta este scopul. Am vrut să creăm o structură/dispunere diferită a paginii de arhivă de mărturii cu date diferite, iar asta a fost realizat în câteva minute.

Am putea face același lucru și pentru pagina unică de mărturii. Copiem fișierul single.php și îl redenumim în single-testimonials.php și schimbăm codul de acolo.

Nu am arătat niciun cod aici, deoarece exemplele de cod ar fi diferite pentru fiecare temă și sunt necesare câteva cunoștințe de bază despre HTML și PHP pentru a codifica șabloanele. Dar este întotdeauna mai ușor să modificați un șablon existent, de aceea am folosit index.php ca punct de plecare.

Interogarea tipurilor de postări personalizate

O altă modalitate de a afișa tipuri de postări personalizate pe site-ul dvs. este să utilizați clasa WP_Query pentru a prelua tipurile de postări personalizate (recercați și afișați-le).

Să presupunem că doriți să construiți un widget care să afișeze toate mărturiile într-un carusel. Sau, că doriți să afișați mărturii înrudite (aceeași taxonomie a serviciului de mărturii) pe pagina unică de mărturii. Veți folosi clasa WP_Query pentru a prelua mărturiile relevante.

În exemplul nostru, vom prelua toate mărturiile care se află în taxonomia personalizată a serviciului de mărturii „de scufundări” și le vom scoate într-o listă:

 <?php $args = array( 'post_type' => 'testimonials', 'post_status' => 'publish', 'tax_query' => array( array( 'taxonomy' => 'testimonial_service', 'field' => 'slug', 'terms' => 'diving' ) ) ); $testimonials = new WP_Query( $args ); if( $testimonials->have_posts() ) : ?> <ul> <?php while( $testimonials->have_posts() ) : $testimonials->the_post(); ?> <li><?php printf( '%1$s - %2$s', get_the_title(), get_the_content() ); ?></li> <?php endwhile; wp_reset_postdata(); ?> </ul> <?php else : esc_html_e( 'No testimonials in the diving taxonomy!', 'text-domain' ); endif; ?>

După cum puteți vedea în codul de mai sus, pregătim mai întâi matricea de setări ale argumentelor, care este folosită ulterior în inițializarea WP_Query . În această matrice, definim să recuperăm:

  • „mărturii” CPT,
  • obține doar mărturiile care sunt publicate,
  • obțineți numai mărturiile care se află în taxonomia personalizată de scufundări `serviciul_mărturii`.

Când new WP_Query este apelat, mărturiile relevante sunt preluate și le putem parcurge în buclă. În buclă pur și simplu scoatem titlul (pe care l-am folosit pentru numele autorului) și conținutul mărturiei într-o listă simplă. De asemenea, ar trebui să folosim întotdeauna funcția wp_reset_postdata , pentru a reseta înapoi la bucla originală, atunci când folosim o buclă WP_Query. Acest lucru va asigura că totul funcționează după ce vom termina cu interogarea noastră personalizată.

Acestea au fost elementele de bază ale tipurilor de postări personalizate și sper că acum înțelegeți cum funcționează. Ca în cazul oricărui subiect, există întotdeauna mai multe detalii de abordat. Vă sfătuiesc să parcurgeți documentația oficială WP pentru toate funcțiile și clasele pe care le-am folosit în aceste exemple. Anunțați-mă în secțiunea de comentarii de mai jos, dacă aveți întrebări.