将init挂钩用于REGISTER_TAYNOMY会导致wp_INSERT_TERM()中的INVALID_TAYNOMY

时间:2015-03-31 作者:Eray

我正在开发一个插件,在自定义分类法中插入新术语时遇到了问题。

<?php

add_action(\'init\', \'create_tax\', 0);
function create_tax()
{
    $args = array(...);
    register_taxonomy(\'custom_tax\', array(\'post\'), $args);
}
// I need this function, so I can use it anywhere in my theme & plugin.
function add_new_term($name)
{
    $result = wp_insert_term($name, \'custom_tax\', array(\'parent\'=>0) );
    var_dump($result);
}
add_new_term(\'Test Term\');
结果是:

object(WP_Error)#159 (2) { ["errors":"WP_Error":private]=> array(1) { ["invalid_taxonomy"]=> array(1) { [0]=> string(16) "Invalid taxonomy" } } ["error_data":"WP_Error":private]=> array(0) { } }
所以这很卑鄙wp_insert_term 已执行before register_taxonomy . 所以我上钩了create_tax 在\\u setup\\u theme之后,而不是仅用于测试的初始化。没有任何变化。我终于包装好了wp_insert_term() 使用函数并将其连接到wp_loaded 行动但正如您所想象的那样,不可能将所有与分类法相关的函数(如wp\\U insert\\U term、wp\\U list\\U categories…)放在一起到wp_loaded.

问题是,

我应该用哪个钩子register_taxonomy? 因为init hook注册分类法为时已晚。

1 个回复
SO网友:TheDeadMedic

您需要在init 挂钩(即当分类法注册时):

function create_tax()
{
    $args = array(...);
    register_taxonomy(\'custom_tax\', array(\'post\'), $args);

    // Now we\'re safe
    $result = wp_insert_term(\'Test Term\', \'custom_tax\', array(\'parent\'=>0) ); 
}

结束

相关推荐

Creating a Category Taxonomy

我有一个电视节目娱乐网站。到目前为止,我至少报道了27场演出。我在节目中使用了太多不同的帖子类型,这会减慢网站的速度,我最终想添加更多的节目。我知道必须有一种比创建帖子类型更简单的方法。我想做的是创建一个类别分类法。就像wordpress有一个带有复选框的类别框一样,我想要一个该框的副本,但我不想说类别,而是希望它说“TV SHOW”,链接看起来像这样,我的网站。com/电视节目/节目标题/类别/帖子名称这是可能的还是有更好的方法?。请让我知道我愿意接受所有建议。我不想将节目放在类别中,因为我已经有了类别