dacă get_post_meta este gol execută ceva
Am nevoie de opusul acestui cod:
<?php if ( get_post_meta($post->ID, 'price_list_category1', true) ) : ?>style="display:none;"<?php endif; ?>
Cu alte cuvinte, vreau ca style="display:none;"
să apară doar când metadatele nu există.
Am crezut că ar fi simplu ca if ( get_post_meta($post->ID, 'price_list_category1', true
dar acest true/false se dovedește a fi ceva complet diferit.
Aveți vreo idee?
Mulțumesc.

Ai putea folosi funcția empty
în interiorul condiției if
astfel:
<?php if( empty( get_post_meta( $post->ID, 'price_list_category1', true ) ) ) : ?>style="display:none;"<?php endif; ?>
Codul de mai sus returnează o eroare, ar trebui să atribui valoarea returnată unei variabile. Vezi modificarea mea mai jos.
Atenție
empty
poate să nu fie cea mai bună opțiune în funcție de valorile pe care le stochezi în meta. Valori precum false
, 0
etc... vor fi considerate goale.
Verifică manualul PHP pentru lista completă de valori care sunt considerate goale.
Editare
Poți încerca să atribui meta-ul unei variabile și să folosești acea variabilă în condiția if
.
<?php
$price_list = get_post_meta( $post->ID, 'price_list_category1', true );
?>
Și apoi...
if( empty( $price_list) ) : ?>style="display:none"<?php endif; ?>

Am încercat asta, dar primesc eroare fatală: Can't use function return value in write context

Poți atribui valoarea returnată de meta unei variabile și să folosești acea variabilă în interiorul if
. Vezi ediția mea.

se pare că funcția empty are limitări și are nevoie de o variabilă simplă pentru a-și face treaba. una dintre acele limitări PHP care nu au sens.

Poți folosi metadata_exists();
(a funcționat pentru mine) pentru a verifica orice meta-informație a postării și apoi să faci ce dorești.
// Verifică și obține o meta-informație a postării
if ( metadata_exists( 'post', $post_id, '_meta_key' ) ) {
$meta_value = get_post_meta( $post_id, '_meta_key', true );
}

Am găsit această soluție în timp ce căutam eu însumi o rezolvare, dar mi-am dat seama că răspunsul este foarte simplu. Pur și simplu trebuie să verifici dacă valoarea este goală, dacă este, atunci nu afișa nimic - dacă are conținut, atunci afișează conținutul - codul pe care l-am folosit este mai jos și poate fi adaptat în funcție de nevoile fiecăruia care are nevoie să îl folosească.
<?php $meta = get_post_meta( get_the_ID(), 'page-sub-title', true );
if ($meta == '') {
echo ' ';
} else {
echo '<h2>' . $meta . '</h2>';
}
?>

if( ! in_array( 'given_key', get_post_custom_keys($post_id) ) ) {}
Aici este scris: https://developer.wordpress.org/reference/functions/get_post_meta/#user-contributed-notes
get_post_custom_keys Returnează un array care conține cheile tuturor câmpurilor personalizate ale unui anumit articol sau pagină. Pentru mine, aceasta este cea mai bună soluție :)
