0

** 不明確で申し訳ありません。ID の数に関係なく、「Summit Sponsors」を 1 回表示するという意味でした。ID が使用されていない場合は非表示にするだけです。ありがとう **

IF ステートメントで複数のカスタム フィールドを使用するクリーンな方法を誰かが知っているかどうか疑問に思っていました。

現時点では間隔を空けて配置しているため、各カスタム フィールド「SponsorHeading#」には独自の if/else ステートメントがあります。

<?php
if(get_post_meta($post_id, 'SponsorHeading1', true)) {
   echo '<h2>Summit Sponsors </h2>';
}
else {
   echo '';
}
if(get_post_meta($post_id, 'SponsorHeading2', true)) {
    echo '<h2>Summit Sponsors </h2>';
}
else {
    echo '';
} 
?>

さらに 3 つのカスタム フィールドについても同様です。次のようなよりクリーンなものが欲しいです:

<?php
if(get_post_meta($post_id, 'SponsorHeading1', true)) || if(get_post_meta($post_id, 'SponsorHeading2', true)) || if(get_post_meta($post_id, 'SponsorHeading3', true)) {
  echo '<h2>Summit Sponsors </h2>';
}
 else {
        echo '';
}
?>

またはそれをクリーンアップするためにそれらの線に沿った何かが、私が試したことは何も機能しませんでした。

助言がありますか?

4

1 に答える 1

3

WordPress のロジック自体の中でこれを管理するためのより効率的な方法があるかどうかについて 100% 確信があるわけではありませんが、あなたが示した例を使用して私が考えることができる最も簡単な解決策は、すべての ID を配列に入れ、それらをループするロジックを持つことですそのようです:

<?php

$fields = array('SponsorHeading1', 'SponsorHeading2', 'SponsorHeading3');

foreach($fields as $field_value) {
  if(get_post_meta($post_id, $field_value, true)) {
    echo '<h2>Summit Sponsors </h2>';
  }
  else {
    echo '';
  }
}

?>

編集:質問に対するユーザーの編集に対処します。では、これはどうですか?フィールドをループし、少なくとも 1 つのフィールドが によって返された場合、 の値が に$has_value変更されます。そして、それに対して行動する場合:TRUEget_post_meta()$has_valueTRUE

<?php

$fields = array('SponsorHeading1', 'SponsorHeading2', 'SponsorHeading3');
$has_value = FALSE;
foreach($fields as $field_value) {
  if(get_post_meta($post_id, $field_value, true)) {
    $has_value = TRUE;
  }
}

if ($has_value) {
  echo '<h2>Summit Sponsors </h2>';
}
else {
  echo '';
}

?>
于 2013-11-06T17:40:48.660 に答える