web-dev-qa-db-fra.com

si get_post_meta est vide, fait quelque chose

J'ai besoin de l'opposé de ceci:

<?php if ( get_post_meta($post->ID, 'price_list_category1', true) )  : ?>style="display:none;"<?php endif; ?>

En d'autres termes, je veux style="display:none;" uniquement lorsque les métadonnées n'existent pas.

Je pensais que ce serait simple comme if ( get_post_meta($post->ID, 'price_list_category1', true mais ce vrai/faux s'avère être un truc complètement différent.

des idées?

Je vous remercie.

4
user8842

Vous pouvez utiliser la fonction empty dans votre if en tant que telle:

<?php if( empty( get_post_meta( $post->ID, 'price_list_category1', true ) ) ) : ?>style="display:none;"<?php endif; ?>

Ce qui précède renvoie une erreur, vous devez affecter la valeur de retour à une variable. Voir mon édition ci-dessous.

Avertissement

empty pourrait ne pas être la meilleure option en fonction des valeurs que vous stockez dans la méta. Des valeurs telles que false, 0 etc ... seront considérées comme vides.

Recherchez dans le manuel PHP _ la liste complète des valeurs considérées comme vides.

Modifier

Vous pouvez essayer d’affecter la méta à une variable et de l’utiliser dans l’instruction if.

 <?php
      $price_list = get_post_meta( $post->ID, 'price_list_category1', true );
 ?>

Et alors...

 if( empty( $price_list) ) : ?>style="display:none"<?php endif; ?>
8
Shane

J'ai trouvé cela en cherchant moi-même une solution, mais la réponse est très simple. Vous devez simplement vérifier si la valeur est vide, si elle ne correspond à rien - si elle a du contenu, puis affichez-le - le code que j'ai utilisé est ci-dessous et peut être personnalisé en conséquence.

<?php $meta = get_post_meta( get_the_ID(), 'page-sub-title', true );
    if ($meta == '') {
        echo '&nbsp;';
    } else {
        echo '<h2>' . $meta . '</h2>';
      }
?>
4
Nikki Mather

Vous pouvez utiliser metadata_exists(); (travaillé pour moi) pour vérifier les méta-publications et faire tout ce que vous voulez.

    // Check and get a post meta

if ( metadata_exists( 'post', $post_id, '_meta_key' ) ) {
    $meta_value = get_post_meta( $post_id, '_meta_key', true );
}
4
Ganesh
if( ! in_array( 'given_key', get_post_custom_keys($post_id) ) ) {}

Ici, il est écrit: https://developer.wordpress.org/reference/functions/get_post_meta/#user-contributed-notes

get_post_custom_keys Retourne un tableau contenant les clés de tous les champs personnalisés d'une publication ou d'une page particulière. Pour moi, c'est la meilleure solution :)

0
SpaceShip