Verifică dacă există un câmp personalizat specific?
Este posibil să verifici dacă există un câmp personalizat pentru un post dat în cadrul loop-ului? De exemplu, folosesc funcții precum get_post_meta($post->ID, 'Company', true);
precedate de un tag <h4>
, dar aș dori să verific dacă există o valoare pentru câmpul personalizat "Company" înainte de a scrie tag-ul <h4>
. Este posibil acest lucru?

Metodele WP get_
sunt folosite pentru a prelua date, nu pentru a le afișa. Puteți verifica cu ușurință variabila - care conține datele - înainte de a adăuga tag-urile head:
$my_post_meta = get_post_meta($post->ID, 'Company', true);
if ( ! empty ( $my_post_meta ) )
echo '<h4>'.$my_post_meta.'</h4>';

@T.Todua OP a întrebat (în anul 2011): "[…] aș dori să verific să mă asigur că există o valoare pentru câmpul personalizat […]", deci verificarea dacă există o valoare este suficientă. Mai mult, get_post_meta()
este un simplu wrapper pentru get_metadata()
, care returnează fie un șir gol ''
fie un array()
gol dacă valoarea nu este prezentă. Poți să clarifici afirmația ta sau ai nevoie de ajutor?

Voiam să fac o observație pentru cititor, nimic mai mult...
dar titlul întrebării în sine (nu am citit întregul subiect, doar titlul) indică o problemă specifică, iar răspunsul nu este 100% soluție la problema pe care o aveam eu (exact ca întrebarea). Totuși, poate a fost satisfăcător pentru OP.

@T.Todua Atunci trebuie să clarifici ce înțelegi prin "există". După cum poți citi în răspuns, precum și în link-ul pe care ți l-am furnizat în comentariul de mai sus, get_metadata()
este suficient pentru a verifica dacă valoarea există în baza de date.

da, get_metadata
este altceva. ... p.s. nu am dat niciodată downvote răspunsului tău, doar a fost observația mea care te-a determinat să faci un comentariu mai bun! mulțumesc

@T.Todua Nu există downvote pe răspuns :) Oricum, get_metadata()
este de fapt același lucru cu get_post_meta()
. Acesta din urmă este doar un "wrapper" simplificat și apelează intern get_metadata()
. Apropo, te superi dacă editez comentariul tău și elimin fluxul nesfârșit de semne de exclamare și marcajele bold?

nu, elimină-l, cum dorești... Nu m-am uitat la get_metadata()
. Nu știu dacă mă înțelegi, ce vreau să spun.. dacă există o cheie, dar valoarea ei este goală, atunci funcția ta ar traduce asta ca "meta nu există"... însă, eu voiam o funcție simplă care să-mi spună doar dacă acea meta există sau nu.

Ei bine, dacă vrei valoarea brută, atunci poți folosi $id_list = [ /* ID-urile tale */ ]; $wpdb->get_results( "SELECT $column, meta_key, meta_value FROM $table WHERE ".sanitize_key('post_id')." IN ($id_list) ORDER BY meta_id ASC", ARRAY_A );
. Altfel, nucleul WordPress va returna întotdeauna fie un array gol, fie un string gol, în funcție de dacă ai cerut o singură valoare sau toate valorile prin argumentul funcției.
