【问题标题】:Invalid argument supplied for foreach() .. Wordpress为 foreach() 提供的参数无效 .. Wordpress
【发布时间】:2016-11-04 13:46:31
【问题描述】:

以下代码突然开始出现此错误:

<?php foreach (get_the_terms(get_the_ID(), 'loan-club') as $cat) : ?>
<img src="<?php echo z_taxonomy_image_url($cat->term_id); ?>" title="ON LOAN AT: <?php echo $cat->name; ?>" />
<?php endforeach; ?> 

有时分类法“loan-club”是空的。这可能是问题吗?如果是这样,有人可以指出正确的代码吗?

【问题讨论】:

  • 检查这个函数的返回类型应该是数组还是对象 get_the_terms(get_the_ID(), 'loan-club')
  • "有时分类法 'loan-club' 是空的"。这就是问题。使用 if(is_array(get_the_terms(get_the_ID(), 'loan-club')))

标签: php wordpress


【解决方案1】:

foreach之前添加if条件:

<?php
$loan_club = get_the_terms(get_the_ID(), 'loan-club');

if(is_array($loan_club)) {
    foreach ($loan_club as $cat) {
      ?>
        <img src="<?php echo z_taxonomy_image_url($cat->term_id); ?>" title="ON LOAN AT: <?php echo $cat->name; ?>" />
      <?php
    } 
}
?>

查看文档中的 get_the_terms() 函数:https://developer.wordpress.org/reference/functions/get_the_terms/

该函数也可能返回 WP_Error 或 false。如果返回 WP_Error 或 false 这将导致错误并且 foreach 循环中断。

【讨论】:

  • 太棒了!感谢您提供非常清晰和准确的答案。为什么我之前使用的代码会突然在我的网站中填满错误?
【解决方案2】:

<?php foreach ((array)get_the_terms(get_the_ID(), 'loan-club') as $cat) : ?>
<img src="<?php echo z_taxonomy_image_url($cat->term_id); ?>" title="ON LOAN AT: <?php echo $cat->name; ?>" />
<?php endforeach; ?>

Note: to all the people complaining about typecast, please note that the OP asked cleanest way to skip a foreach if array is empty (emphasis is mine). A value of true, false, numbers or strings is not considered empty.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 2011-02-07
    相关资源
    最近更新 更多