php错误使用wordpress函数get_terms

时间:2016-11-25 14:03:14

标签: php wordpress

我正在以这种方式在我的网站中设置变量:

$args = array('parent' => 2818,'hide_empty' => false);
$best_of_cat_child_terms = get_terms( $args ); -> (functions.php:26)
$best_of_cat = $best_of_cat_child_terms;

问题是我也遇到了这个php错误:

警告:

Invalid argument supplied for foreach()

位置:

wp-includes/class-wp-term-query.php:373

致电堆栈:

WP_Term_Query->get_terms()
 wp-includes/class-wp-term-query.php:287
WP_Term_Query->query()
 wp-includes/taxonomy.php:1217
get_terms()
 wp-content/themes/theme-child/functions.php:26 (-> functions.php line 26 marked above)

我是以正确的方式设置的吗?

2 个答案:

答案 0 :(得分:3)

您可以使用is_wp_error()

检查错误
$terms = get_terms( array(
      'taxonomy'=> 'category',
      'parent' => 2818,
      'hide_empty' => 0) 
);

if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
  echo '<ul>';
    foreach ( $terms as $term ) {
        echo '<li>' . $term->name . '</li>';
    }
  echo '</ul>';
}
else{
  $error_string = $terms->get_error_message();
  echo '<div id="message" class="error"><p>' . $error_string .'</p></div>';
}

关于您在评论中说的错误,看起来您似乎没有使用4.5以下的WordPress版本?

  

在4.5.0之前,get_terms()的第一个参数是分类法或分类法列表:

$terms = get_terms( 'post_tag', array(
'hide_empty' => false,
) );
     

从4.5.0开始,分类法应该通过$ args数组中的'taxonomy'参数传递:

$terms = get_terms( array(
'taxonomy' => 'post_tag',
'hide_empty' => false,
) );

关于get_terms()

在您的情况下,从$ args和

中删除taxonomy
$terms = get_terms('category', $args);

答案 1 :(得分:0)

提供taxonomy arg:

$args = array(
    'taxonomy' => 'your_taxonomy',
    'parent' => 2818,
    'hide_empty' => false
);