在同一个地方出错试图获取非对象WordPress的属性

时间:2014-02-25 10:12:58

标签: php wordpress

我创建了一个返回Custom Post类型分类数组的函数:

function arfolio_get_cpt_tax(){

    $categories = get_terms( 'service_categories' );
    $cat_array = array();

    foreach( $categories as $cat ){
        $cat_array[$cat->term_id] = $cat->name;
    }

    return $cat_array;

}

我在page.php中调用此函数。它工作正常。但是当我调用这个函数时,另一个文件包含在functions.php中它让我犯了错误:

Notice: Trying to get property of non-object in wordpress\wp-content\themes\arfolio-wp\inc\cpt.php on line 127

请帮我解决此错误。

第127行是上述功能:

$cat_array[$cat->term_id] = $cat->name;

由于

2 个答案:

答案 0 :(得分:1)

检查$categories是否为对象数组,以显示它,输入以下代码:

function arfolio_get_cpt_tax(){

    $categories = get_terms( 'service_categories' );

    // See the var
    var_dump($categories); die();

    $cat_array = array();

    foreach( $categories as $cat ){
        $cat_array[$cat->term_id] = $cat->name;
    }

    return $cat_array;

}

它应该显示一个对象数组,如果没有,检查函数的答案是什么,可能是一个数组数组,你应该使用类似的东西:

function arfolio_get_cpt_tax(){

    $categories = get_terms( 'service_categories' );
    $cat_array = array();

    foreach( $categories as $cat ){
        $cat_array[ $cat['term_id'] ] = $cat['name'];
    }

    return $cat_array;

}

答案 1 :(得分:0)

get_terms返回WP_Error对象如果没有成功请执行

var_dump($categories); die();

并检查错误 它可能是这样的

object(WP_Error)[196]
  public 'errors' => 
    array (size=1)
      'invalid_taxonomy' => 
        array (size=1)
          0 => string 'Invalid taxonomy' (length=16)
  public 'error_data' => 
    array (size=0)
      empty

如果是,请检查您的分类是否存在

修改

这是在分类登记之前发生的术语提取的情况。

请检查您在注册分类后调用您的功能 例如,检查您是否包含在分类法注册后包含调用该函数的文件

我假设您在init操作中注册了您的分类,并且在包含functions.php之后实际调用了init操作,因此在functions.php中调用您的函数将不起作用 所以你需要在模板或模板部件中使用这个功能