私はこれの反対が必要です:
<?php if ( get_post_meta($post->ID, 'price_list_category1', true) ) : ?>style="display:none;"<?php endif; ?>
言い換えれば、メタデータが存在しない場合にのみstyle="display:none;"
が欲しいのです。
私はそれがif ( get_post_meta($post->ID, 'price_list_category1', true
のように簡単であると思いました、しかしこの真偽は全く異なるものであることがわかります。
何か案は?
ありがとうございました。
以下のように、empty
内でif
関数を使用できます。
<?php if( empty( get_post_meta( $post->ID, 'price_list_category1', true ) ) ) : ?>style="display:none;"<?php endif; ?>
上記はエラーを返します。戻り値を変数に代入する必要があります。下記の私の編集を参照してください。
警告
メタに格納する値によっては、empty
が最善の選択肢ではない場合があります。 false
、0
などの値は空と見なされます。
空と見なされる値の完全なリストについては、 PHP manual を確認してください。
編集
メタを変数に代入し、それをif
ステートメントで使用することができます。
<?php
$price_list = get_post_meta( $post->ID, 'price_list_category1', true );
?>
その後...
if( empty( $price_list) ) : ?>style="display:none"<?php endif; ?>
私は自分で解決策を探すことでこれを発見しましたが、答えは非常に簡単です。値が空かどうか、それが何もエコーしない場合 - それが内容を持っている場合、その内容を表示する - をチェックする必要があるだけです。
<?php $meta = get_post_meta( get_the_ID(), 'page-sub-title', true );
if ($meta == '') {
echo ' ';
} else {
echo '<h2>' . $meta . '</h2>';
}
?>
あなたはmetadata_exists();
(私のために働いていました)を使ってどんな投稿メタとあなたが望むものでもdoをチェックすることができます。
// Check and get a post meta
if ( metadata_exists( 'post', $post_id, '_meta_key' ) ) {
$meta_value = get_post_meta( $post_id, '_meta_key', true );
}
if( ! in_array( 'given_key', get_post_custom_keys($post_id) ) ) {}
ここに書かれています: https://developer.wordpress.org/reference/functions/get_post_meta/#user-contributed-notes
get_post_custom_keys 特定の投稿またはページのすべてのカスタムフィールドのキーを含む配列を返します。私にとっては、これが最善の解決策です:)