Tutoriale WordPress de încredere, atunci când aveți cea mai mare nevoie.
Ghidul începătorului pentru WordPress
Cupa WPB
25 de milioane+
Site-uri web care folosesc plugin-urile noastre
16+
Ani de experiență WordPress
3000+
Tutoriale WordPress de la experți

Cum să afișați o postare WordPress doar dacă are un câmp personalizat specific

Știți când trebuie să afișați anumite postări WordPress pe baza câmpurilor personalizate? Am trecut și noi prin asta.

Când am început cu WordPress, orice fragment de cod părea intimidant, mai ales când tot ce voiam era să afișăm postări cu informații specifice.

Dar iată vestea bună: după ce am ajutat mii de începători WordPress, am constatat că chiar și ceva ce sună tehnic, cum ar fi filtrarea câmpurilor personalizate, nu trebuie să fie înfricoșător.

De fapt, vă vom ghida printr-o metodă simplă de cod pentru a face acest lucru.

Această soluție funcționează perfect, indiferent dacă publicați postări obișnuite de blog sau tipuri de postări personalizate bazate pe criterii specifice.

Cum să afișați o postare WordPress doar dacă are un câmp personalizat specific

📌 Notă rapidă: Acest tutorial este pentru afișarea postărilor WordPress dacă au o valoare introdusă într-un câmp personalizat specific.

Dacă dorești să afișezi câmpuri personalizate pe partea frontală a unei postări WordPress, atunci poți citi ghidul nostru despre cum să afișezi câmpuri personalizate în temele WordPress.

De ce să afișezi postări WordPress cu un câmp personalizat specific?

Când creați o postare pe site-ul dvs. WordPress, puteți utiliza câmpuri personalizate pentru a adăuga metadate suplimentare postării.

Metadatele sunt informații suplimentare pe care le puteți adăuga la o postare. De exemplu, dacă ați scrie o recenzie de carte, ați putea adăuga câmpuri personalizate pentru „Numele autorului” sau „Evaluarea în stele”.

Câmpurile personalizate sunt un concept avansat WordPress și există multe moduri de a adăuga câmpuri personalizate în WordPress. Veți găsi o mulțime de sfaturi utile despre cum să utilizați și să afișați câmpuri personalizate în postarea noastră, WordPress Custom Fields 101: Tips, Tricks, and Hacks.

Poți adăuga metadate la o postare folosind câmpuri personalizate

Unul dintre utilizatorii noștri ne-a întrebat cum să afișăm postările WordPress doar dacă este prezent un câmp personalizat specific. Acest lucru poate fi util dacă dorești să creezi o pagină personalizată care listează toate postările care conțin un câmp personalizat și/sau o valoare specifică.

După ce am răspuns cu soluția, am crezut că ar fi cel mai bine să o împărtășim cu toată lumea, astfel încât comunitatea mai largă WordPress.org să beneficieze și ea de pe urma ei.

Editarea fișierelor temei WordPress: Ce trebuie să aveți în vedere

Pentru a putea urma acest tutorial corect, iată câteva lucruri pe care ar trebui să le ai în vedere:

  1. Acest tutorial implică editarea fișierelor temei WordPress cu cod, deci nu este cel mai potrivit pentru începătorii completi. Dacă sunteți nou în acest domeniu, atunci va trebui să citiți ghidul nostru despre cum să copiați și să lipiți cod în WordPress.
  2. Recomandăm salvarea site-ului tău și/sau utilizarea unui mediu de staging, astfel încât site-ul tău live să nu fie afectat atunci când apare o eroare. Acest lucru se datorează faptului că vei adăuga cod în fișierele temei tale, ceea ce poate fi riscant.
  3. Vă recomandăm să înțelegeți cum funcționează ierarhia șabloanelor WordPress, astfel încât să știți unde să adăugați codul mai târziu.
  4. Va trebui, de asemenea, să vă familiarizați cu modul în care funcționează buclele WordPress, deoarece vom apela acești parametri într-o interogare WordPress.

De asemenea, rețineți că acest tutorial funcționează doar cu teme WordPress clasice WordPress, deoarece temele bloc au un set diferit de fișiere de temă.

Acestea fiind spuse, să vedem cum să afișăm o postare WordPress doar dacă are un câmp personalizat specific.

Cum să filtrezi postările în funcție de câmpuri personalizate specifice

Înainte de a vă arăta codul pe care trebuie să îl utilizați, trebuie să știți în ce fișier de temă trebuie să îl adăugați. Cel mai probabil, acesta va fi un șablon de pagină, cum ar fi index.php, archive.php sau page.php.

Să spunem că doriți să îl adăugați la fișierul index.php al temei Twenty Twenty-One. Iată cum arată în prezent partea de buclă WordPress din acel fișier:

<?php
if ( have_posts() ) {

// Load posts loop.
	while ( have_posts() ) {
		the_post();

		get_template_part( 'template-parts/content/content', get_theme_mod( 'display_excerpt_or_full_post', 'excerpt' ) );
	}

	// Previous/next page navigation.
	twenty_twenty_one_the_posts_navigation();

} else {

	// If no content, include the "No posts found" template.
	get_template_part( 'template-parts/content/content-none' );

}

get_footer();

Acest cod folosește bucla WordPress implicită (have_posts() și the_post()) pentru a afișa postările. Această metodă este potrivită pentru majoritatea temelor WordPress standard și este utilizată pentru a afișa postările fără nicio filtrare sau sortare personalizată.

Acum, să spunem că folosiți câmpul personalizat „culoare”, așa cum este în exemplul de mai sus. Va trebui să înlocuiți întregul cod cu fragmentul de mai jos:

<?php
// The Query to show a specific Custom Field
$the_query = new WP_Query('meta_key=color');

// Load posts loop.
if ( $the_query->have_posts() ) {
    while ( $the_query->have_posts() ) {
        $the_query->the_post();

        get_template_part( 'template-parts/content/content', get_theme_mod( 'display_excerpt_or_full_post', 'excerpt' ) );
    }

    // Previous/next page navigation.
    twenty_twenty_one_the_posts_navigation();

} else {

    // If no content, include the "No posts found" template.
    get_template_part( 'template-parts/content/content-none' );

}

// Reset Post Data
wp_reset_postdata();

get_footer();

În acest nou cod, am introdus o interogare personalizată pentru a prelua postări care au un câmp personalizat specific (în acest caz, orice postare cu câmpul personalizat „culoare”).

Apoi, folosește un buclă personalizată (if ($the_query->have_posts())) pentru a parcurge postările preluate de această interogare personalizată, afișând conținutul fiecărei postări în același mod ca primul fragment.

De asemenea, am adăugat funcțiawp_reset_postdata() pentru a ne asigura că WordPress revine la afișarea corectă a tuturor postărilor după interogarea personalizată. Acest lucru asigură funcționarea lină a site-ului și afișarea conținutului corect utilizatorilor.

Acum, ce se întâmplă dacă doriți să găsiți postări unde câmpul personalizat „culoare” are o anumită valoare, cum ar fi „albastru”? Pentru a face acest lucru, trebuie doar să adăugați un parametru „meta_value” la interogarea dvs.

Codul dvs. actualizat pentru interogare va arăta astfel:

$the_query = new WP_Query( array( 'meta_key' => 'color', 'meta_value' => 'blue' ) );

💡Sfat Pro: Puteți extinde filtrarea și mai mult cu parametrul meta_compare. Acesta vă permite să găsiți postări care nu corespund unei valori.

De exemplu, pentru a afișa toate postările unde culoarea nu este „albastru”, interogarea ta ar arăta astfel:

$the_query = new WP_Query( array( 'meta_key' => 'color', 'meta_value' => 'blue', 'meta_compare' => '!=' ) );

!= îi spune WordPress-ului să găsească toate postările unde câmpul „culoare” există, dar nu este egal cu „albastru”.

Există mulți alți operatori de comparație pe care îi puteți utiliza, pe care îi puteți găsi în documentația oficială pentru dezvoltatori WordPress.

După ce ați salvat codul în fișierul PHP al șablonului de pagină, puteți verifica site-ul dvs. WordPress pe partea frontală pentru a vedea codul în acțiune.

Întrebări Frecvente Despre Afișarea unei Postări Dacă Are un Câmp Personalizat Specific

Iată câteva întrebări pe care cititorii noștri le pun frecvent despre afișarea unei postări dacă are doar un câmp personalizat specific:

Există o modalitate de a face acest lucru fără a edita fișierele temei?

Da, și este metoda pe care o recomandăm pentru majoritatea utilizatorilor. Un plugin precum WPCode vă permite să adăugați în siguranță fragmente de cod PHP personalizate, cum ar fi acesta, fără a atinge direct fișierele temei dvs.

Acest lucru vă protejează site-ul de erori și asigură că personalizările dvs. nu se pierd atunci când actualizați tema.

Pot filtra postările după mai multe câmpuri personalizate?

Puteți. Funcția WP_Query este foarte puternică și acceptă argumente mai complexe. Ați folosi un parametru „meta_query”, care vă permite să construiți un tablou de condiții pentru a potrivi mai multe câmpuri personalizate simultan.

Metoda aceasta funcționează cu temele de bloc?

Acest tutorial specific se concentrează pe temele clasice prin editarea fișierelor precum index.php sau archive.php. Teme de bloc folosesc Editorul de site și nu se bazează pe aceste fișiere.

Pentru a obține un rezultat similar într-o temă de bloc, ați folosi blocul Buclă de interogare și opțiunile sale de filtrare încorporate, care nu necesită cod personalizat.

Care este diferența dintre „meta_key” și „meta_value”?

Gândiți-vă la „meta_key” ca la numele etichetei, cum ar fi „Culoare” sau „Stare”. „meta_value” este datele efective introduse în acel câmp, cum ar fi „Albastru” sau „Publicat”.

Utilizarea cheii găsește orice postare cu acel câmp personalizat, în timp ce utilizarea valorii găsește orice postare cu acea informație specifică.

Află mai multe moduri de a-ți personaliza site-ul WordPress

Iată mai multe modalități prin care vă puteți personaliza paginile WordPress:

Sperăm că acest tutorial v-a ajutat să învățați cum să afișați o postare WordPress doar dacă are un câmp personalizat specific. De asemenea, ați putea dori să consultați ghidul nostru complet despre cum să editați un site WordPress și selecțiile noastre de experți ale celor mai bune pluginuri Figma pentru WordPress.

Dacă ți-a plăcut acest articol, te rugăm să te abonezi la canalul nostru de YouTube pentru tutoriale video WordPress. Ne poți găsi, de asemenea, pe Twitter și Facebook.

Dezvăluire: Conținutul nostru este susținut de cititori. Acest lucru înseamnă că dacă faceți clic pe unele dintre linkurile noastre, este posibil să câștigăm un comision. Vedeți cum este finanțat WPBeginner, de ce contează și cum ne puteți susține. Iată procesul nostru editorial.

Cel mai bun instrumentar WordPress

Obține acces GRATUIT la instrumentarul nostru - o colecție de produse și resurse legate de WordPress pe care fiecare profesionist ar trebui să le aibă!

Interacțiuni cu cititorii

11 CommentsLeave a Reply

  1. am o întrebare domnule, dacă vreau să afișez un singur post și câmpuri personalizate, ce ar trebui să fac.
    nu vreau să afișez postarea cu câmpuri personalizate specifice. vreau să afișez toate câmpurile personalizate ale postării

  2. Salut, mulțumesc pentru tutorialul util. Am o întrebare, pe un site WordPress am setat o valoare meta numită "meta_country" și apoi am setat fiecare postare cu țara articolului, cum ar fi "us", "uk", "fr"... Acum încerc să adaug undeva pe pagina principală a blogului un link care să afișeze lista tuturor postărilor cu o anumită țară și o anumită etichetă. De exemplu, toate postările "UK" etichetate "APPLE".
    Nu înțeleg cum să fac asta, mă poate ajuta cineva?

  3. Nu am putut genera niciun rezultat decât dacă am inclus parametrul „post_type” în interogare.

    adică: $the_query = new WP_Query(‘post_type=page&meta_key=color’);

  4. Salut,

    Cum aș putea afișa postări care NU au un Câmp Personalizat specific? Aveți vreo idee?

    Mulțumesc!!!

    • Din câte știu din php, ar trebui să fie meta_key!=’your key’

      ;doar trebuie să știți că „!” înseamnă „nu”

Lasă un răspuns

Vă mulțumim că ați ales să lăsați un comentariu. Vă rugăm să rețineți că toate comentariile sunt moderate conform politicii noastre de comentarii, iar adresa dvs. de e-mail NU va fi publicată. Vă rugăm să NU folosiți cuvinte cheie în câmpul nume. Să avem o conversație personală și semnificativă.