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?
kaiser
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
@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.
kaiser
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
@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?
kaiser
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.
T.Todua
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.
kaiser