0

** 对于不清楚的地方,我深表歉意——我的意思是,无论使用多少个 ID,我都希望“峰会赞助商”显示一次。只是为了在没有使用 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

不是 100% 确定是否有更有效的方法来管理 WordPress 的逻辑本身,但我能想到的使用您给出的示例的最简单的解决方案是将所有 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 '';
  }
}

?>

编辑:解决用户对问题的编辑。那么这个怎么样?我们遍历字段,$has_value如果TRUE至少有一个字段由get_post_meta(). 如果$has_value是,TRUE则对其采取行动:

<?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 回答