Verifică dacă există un câmp personalizat specific?

4 iul. 2011, 01:37:04
Vizualizări: 18.7K
Voturi: 2

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?

1
Comentarii

Îmi place cum întrebările puse acum 11 ani pot fi încă atât de relevante.

Lisa Lisa
14 iul. 2022 02:03:02
Toate răspunsurile la întrebare 1
8

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>';
4 iul. 2011 05:07:43
Comentarii

Nu, doar verifică dacă valoarea este goală.

T.Todua T.Todua
26 feb. 2017 00:55:27

@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 kaiser
26 feb. 2017 01:18:01

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
26 feb. 2017 19:42:22

@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 kaiser
26 feb. 2017 20:09:49

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
26 feb. 2017 20:26:47

@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 kaiser
26 feb. 2017 21:10:33

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 T.Todua
26 feb. 2017 23:08:10

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 kaiser
26 feb. 2017 23:16:41
Arată celelalte 3 comentarii