检索JSON中的分类列表

时间:2015-05-26 作者:abada henno

我有自定义分类法

就像那样

/wp管理/编辑标签。php?分类法=my\\u目录(&U);post\\u type=我的诗人

我想要检索json中的分类列表

add_action(\'init\', array($this, \'json_handler\'));
我试过了

function json_handler(){
$categories = get_terms( \'my_cat\', \'orderby=count&hide_empty=0\' );
print_r($categories);
}
输出点

WP_Error Object ( [errors:WP_Error:private] => Array ( [invalid_taxonomy] => Array ( [0] => Invalid taxonomy ) ) [error_data:WP_Error:private] => Array ( ) ) 
但它适用于普通类别

$categories = get_terms( \'category\', \'orderby=count&hide_empty=0\' );
    print_r($categories);
输出点

Array ( [0] => stdClass Object ( [term_id] => 1 [name] => Uncategorized [slug] => uncategorized [term_group] => 0 [term_taxonomy_id] => 1 [taxonomy] => category [description] => [parent] => 0 [count] => 1 ) )
这是my\\u cat register\\u分类法

add_action(\'init\', array($this, \'create_stores_nonhierarchical_taxonomy\'));
function create_stores_nonhierarchical_taxonomy() {
// Labels part for the GUI
$labels = array(
\'name\' => _x( \'Store  Categories\', $this -> textdomain ),
\'singular_name\' => _x( \'Store  Categories\', $this -> textdomain ),
\'search_items\' =>  __( \'Search Store  Categories\',$this -> textdomain ),
\'popular_items\' => __( \'Popular Store  Categories\',$this -> textdomain ),
\'all_items\' => __( \'All Store  Categories \',$this -> textdomain ),
\'parent_item\' => null,
\'parent_item_colon\' => null,
\'edit_item\' => __( \'Edit Store Categories\',$this -> textdomain ), 
\'update_item\' => __( \'Update Store Categories\' ,$this -> textdomain),
\'add_new_item\' => __( \'Add New Store Categories\',$this -> textdomain ),
\'new_item_name\' => __( \'New Store Categories Name\',$this -> textdomain ),
\'add_or_remove_items\' => __( \'Add or remove Store Categories\',$this -> textdomain ),
\'choose_from_most_used\' => __( \'Choose from the most used Store Categories\',$this -> textdomain ),
\'menu_name\' => __( \'Store Categories\',$this -> textdomain ),
);
// Now register the non-hierarchical taxonomy like tag
register_taxonomy(\'my_cat\',$this->post_type,array(
\'labels\'            => $labels,
    \'hierarchical\'      => true,
    \'show_ui\'           => true,
    \'how_in_nav_menus\'  => true,
    \'public\'            => true,
    \'show_admin_column\' => true,
    \'query_var\'         => true,
\'rewrite\' => array( \'slug\' => \'my_cat\' ),
));
}
谢谢

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

您的问题是,您试图在注册分类法数据之前访问它。

This doesn\'t work:

add_action(\'init\', \'json_handler\');
function json_handler(){
    $categories = get_terms( \'my_cat\', \'orderby=count&hide_empty=0\' );
    if( ! is_wp_error( $categories ) ) {
        // encode the $categories array as json
        print_r( json_encode( $categories ) );
    }
}

add_action(\'init\', \'create_stores_nonhierarchical_taxonomy\');
function create_stores_nonhierarchical_taxonomy() {
    // Labels part for the GUI
    $labels = array(
        \'name\' => _x( \'Store  Categories\', $this -> textdomain ),
        //Rest of your labels
    );
    // Now register the non-hierarchical taxonomy like tag
    register_taxonomy(\'my_cat\',$this->post_type,array(
        \'labels\'            => $labels,
        \'hierarchical\'      => true,
        \'show_ui\'           => true,
        \'how_in_nav_menus\'  => true,
        \'public\'            => true,
        \'show_admin_column\' => true,
        \'query_var\'         => true,
        \'rewrite\'           => array( \'slug\' => \'my_cat\' ),
    ));
}

This works:

add_action(\'init\', \'create_stores_nonhierarchical_taxonomy\');
function create_stores_nonhierarchical_taxonomy() {
    // Labels part for the GUI
    $labels = array(
        \'name\' => _x( \'Store  Categories\', $this -> textdomain ),
        //Rest of your labels
    );
    // Now register the non-hierarchical taxonomy like tag
    register_taxonomy(\'my_cat\',$this->post_type,array(
        \'labels\'            => $labels,
        \'hierarchical\'      => true,
        \'show_ui\'           => true,
        \'how_in_nav_menus\'  => true,
        \'public\'            => true,
        \'show_admin_column\' => true,
        \'query_var\'         => true,
        \'rewrite\'           => array( \'slug\' => \'my_cat\' ),
    ));
}

add_action(\'init\', \'json_handler\');
function json_handler(){
    $categories = get_terms( \'my_cat\', \'orderby=count&hide_empty=0\' );
    if( ! is_wp_error( $categories ) ) {
        // encode the $categories array as json
        print_r( json_encode( $categories ) );
    }
}
如上所述,更改顺序并不是一个很好的可维护性解决方案。更好的解决方案是:

1.-在上注册分类init 低优先级(默认优先级为10,具有相同优先级的操作按其出现的顺序执行):

add_action( \'init\', array($this, \'create_stores_nonhierarchical_taxonomy\'), 1 );
2尝试在之后访问分类数据init 事件,因此您确定分类法已注册,或init 优先级高于taxonomy register回调优先级的事件,在本例中优先级高于1。

Note: 在之前或之后注册分类init 不推荐使用。

结束

相关推荐

WP JSON API META_QUERY不工作

在下面的代码示例中,我使用帖子标题(名称)作为字段来存储电子邮件地址,而密码位于自定义字段中。以下查询将提取正确的用户,但不关心密码是否匹配。我已经搜了几个小时了,这是我迄今为止最好的一次,还缺什么?$posts = $json_api->introspector->get_posts(array( \'post_type\' => \'custom_user\', \'name\' => \'[email protected]\'