wordpress get_terms函数在我的插件中不起作用

时间:2011-12-11 13:17:11

标签: wordpress api plugins

再次来自遥远的地方。

你知道我试图列出自定义分类中的所有术语,当我使用下面的代码时:

$terms = get_terms($taxonomy , 'hide_empty=0');
print_r($terms);
$count = count($terms);
if ( $count > 0 ){
echo "<ul>";
foreach ( $terms as $term ) {
  echo "<li>" . $term->name . "</li>";

}
echo "</ul>";

wp返回一个疯狂的错误:无效分类:

WP_Error Object
(
    [errors] => Array
        (
            [invalid_taxonomy] => Array
                (
                    [0] => Invalid Taxonomy
                )

        )

    [error_data] => Array
        (
        )

)

非常有趣的是,你知道,当我在single.php中使用上面的代码时,我没有看到任何错误,并且它工作正常。

有人请帮帮我!

4 个答案:

答案 0 :(得分:2)

<强>解决

我正在尝试使用:

get_terms( 'event_category', array('hide_empty'=>FALSE) );   

使用我的管理主题选项并在使用时面临同样的问题:

add_action( 'init', 'register_features_taxonomy_event_category' );   

但现在解决了使用:

add_action( 'after_setup_theme', 'register_features_taxonomy_event_category' );

答案 1 :(得分:1)

哦,我的......我通过一个疯狂的解决方案来解决这个问题。看下面:

function load_terms($taxonomy){
    global $wpdb;
    $query = 'SELECT DISTINCT 
                                t.name 
                            FROM
                                `wp-cls`.wp_terms t 
                            INNER JOIN 
                                `wp-cls`.wp_term_taxonomy tax 
                            ON 
                             `tax`.term_id = `t`.term_id
                            WHERE 
                                ( `tax`.taxonomy = \'' . $taxonomy . '\')';                     
    $result =  $wpdb->get_results($query , ARRAY_A);
    return $result;                 
} 

你可以看到我使用了一个查询,但是我无法将这个插件应用到我的编程团队。我仍在等待wordpress插件中get_terms函数的正确解决方案/用法。

问候。

答案 2 :(得分:1)

get_terms返回无效的分类错误,因为: 您有一个在“init”挂钩中注册的自定义分类 所以在wp-admin中它不起作用 - &gt;在调用“get_term”后注册了您的分类 https://wordpress.stackexchange.com/questions/13480/get-terms-return-errors/13482#13482

答案 3 :(得分:1)

没有什么可以添加但是要说清楚: get_terms()在“admin_init”操作挂钩中不起作用!

我确实喜欢bizzr3。把我的代码放在这里是因为我对bizzr3的代码有点混淆:

function load_terms($taxonomy){
  global $wpdb;
  $query = 'SELECT DISTINCT 
                  t.name 
              FROM
                wp_terms t 
              INNER JOIN 
                wp_term_taxonomy tax 
              ON 
                tax.term_id = t.term_id
              WHERE 
                  ( tax.taxonomy = \'' . $taxonomy . '\')';                     
  $result =  $wpdb->get_results($query , ARRAY_A);
  return $result;                 
} 

然后只需在“admin_init”函数中调用load_terms()

//get all terms from taxonomy Category
  $terms = load_terms('category');

并且谢谢,就像一个魅力。