WordPress 4.5.0之后如何从自定义分类中获取术语

时间:2017-10-07 作者:Maqk

我一直在开发短代码,从插件中提取自定义分类法的术语。它在WordPress 4.5.0之前运行良好,现在意识到它在4.5.0之后无法运行。

我用下面这样的旧方法提取这些术语。

Old Method

// Sermon Topics
$prefix_topic_terms= array();
if ( ! empty( $prefix_topic_terms ) ) {
    $prefix_sermon_topic = get_terms(\'ctc_sermon_topic\', \'orderby=name&hide_empty=0\');
    foreach ($prefix_sermon_topic as $category) {
        $prefix_topic_terms[$prefix_sermon_topic->slug] = $prefix_sermon_topic->name;
    }
}

New Method that didn\'t work

// Sermon Topics
$prefix_topic_terms = array();
if ( ! empty( $prefix_topic_terms ) ) {
    $prefix_sermon_topic = get_terms( array(
        \'taxonomy\' => \'ctc_sermon_topic\',
        \'hide_empty\' => false,
        \'orderby\' => \'name\',
        \'hide_empty\' => true,
    ));

    foreach ($prefix_sermon_topic as $category) {
        $prefix_topic_terms[$category->slug] = $category->name;
    }
}

var_dump($prefix_topic_terms);
显示错误无效分类错误,如下所示

object(WP_Error)#2577 (2) {
  ["errors"]=>
  array(1) {
    ["invalid_taxonomy"]=>
    array(1) {
      [0]=>
      string(17) "Invalid taxonomy."
     }
  }
  ["error_data"]=>
  array(0) {
  }
}
我做错了什么?

Edited使用以下代码获得成功

// Sermon Topics
$prefix_topic_terms = array();
$prefix_sermon_topic = get_terms( array(
    \'taxonomy\' => \'ctc_sermon_topic\',
    \'orderby\' => \'name\',
    \'hide_empty\' => true,
));
if ( ! empty( $prefix_topic_terms ) && ! is_wp_error( $prefix_topic_terms ) ) {
    foreach($prefix_sermon_topic as $category) {
        $prefix_topic_terms [$category->slug] = $category->name;
    }
}
如果我删除if条件,则上述代码有效。

2 个回复
最合适的回答,由SO网友:Maqk 整理而成

在检查空变量并定义为数组时,将其修复。现在将代码转换为函数。希望这对其他人有帮助

早些时候,情况是错误的。现在,我正在检查传递的变量是否是WordPress错误is_wp_error 并且检查taxonomy terms变量不为空。

function sermon_topic() {
    $prefix_terms = array();
    $prefix_postype_taxonomy = get_terms( array(
        \'taxonomy\' => \'ctc_sermon_topic\',
        \'orderby\' => \'name\',
        \'hide_empty\' => true,
    ));
    if ( ! empty( $prefix_postype_taxonomy ) && ! is_wp_error( $prefix_postype_taxonomy ) ) {
        foreach($prefix_postype_taxonomy as $category) {
            $prefix_terms[$category->slug] = $category->name;
        }
    }
    return $prefix_terms;
}
我想在哪里提取我使用函数的术语sermon_topic();

SO网友:janh

好吧,大胆猜测:

$prefix_topic_terms= array();
if ( ! empty( $iva_topic_terms ) ) {
vs公司

$prefix_topic_terms = array();
if ( ! empty( $prefix_topic_terms ) ) {
您已经更改了在新代码中检查为空的变量。该代码永远不会查询该分类法的get\\u术语,因为$prefix_topic_terms 不会为空。您正在接收的错误对象可能与先前的get\\u terms调用无关。

结束

相关推荐

Custom sub taxonomy order by

在单类别页面中,特定的父类别子类别按slug或order wise显示,我会尝试,但我的代码中有错误,请检查我的代码并告诉我如何可能。$term_children = get_term_children( $EM_Category->id, \'event-categories\' ); if ( count($term_children) > 0 ) { foreach ( $term_children as $child ) { $term