我正在创建一个Wordpress网站,我想在我的主题选项中使用自定义分类法,我已经使用“init”挂钩注册了该分类法。但问题是,“init”钩子在主题选项之后被触发(我正在使用Redux框架插件来处理主题选项)。因此,当我在主题选项中使用get\\u categories()函数并尝试获取自定义分类法时,我遇到了一个“invalid\\u categority”错误。
因此,我决定只注册分类法,不使用任何挂钩,只需在函数中调用register\\u taxonomy()函数。php文件,它工作了。
我只想知道这是否“安全”,如中所示,如果我只调用register\\u taxonomy函数而不使用任何挂钩,会有什么后果。
以下是使用init钩子时无法工作的代码:
function my_function(){
register_taxonomy( \'portfolio_category\', \'portfolio\', array(
\'labels\' => array(
\'name\' => _x( \'Portfolio Categories\', \'taxonomy general name\' ),
\'singular_name\' => _x( \'Portfolio Category\', \'taxonomy singular name\' ),
\'search_items\' => __( \'Search Portfolio Categories\' ),
\'all_items\' => __( \'All Portfolio Categories\' ),
\'parent_item\' => __( \'Parent Portfolio Category\' ),
\'parent_item_colon\' => __( \'Parent Portfolio Category:\' ),
\'edit_item\' => __( \'Edit Portfolio Category\' ),
\'update_item\' => __( \'Update Portfolio Category\' ),
\'add_new_item\' => __( \'Add New Portfolio Category\' ),
\'new_item_name\' => __( \'New Portfolio Category\' ),
\'menu_name\' => __( \'Portfolio Categories\' ),
),
\'hierarchical\' => true,
) );
}
add_action(\'init\', \'my_function\');
$portfolio_categories = get_categories(array(\'taxonomy\' => \'portfolio_category\', \'hide_empty\'=> 0));
echo "<pre>", print_r($portfolio_categories), "</pre>"; // This will return an error of \'invalid_taxonomy\'
这是一个有效的方法(不使用任何挂钩):
register_taxonomy( \'portfolio_category\', \'portfolio\', array(
\'labels\' => array(
\'name\' => _x( \'Portfolio Categories\', \'taxonomy general name\' ),
\'singular_name\' => _x( \'Portfolio Category\', \'taxonomy singular name\' ),
\'search_items\' => __( \'Search Portfolio Categories\' ),
\'all_items\' => __( \'All Portfolio Categories\' ),
\'parent_item\' => __( \'Parent Portfolio Category\' ),
\'parent_item_colon\' => __( \'Parent Portfolio Category:\' ),
\'edit_item\' => __( \'Edit Portfolio Category\' ),
\'update_item\' => __( \'Update Portfolio Category\' ),
\'add_new_item\' => __( \'Add New Portfolio Category\' ),
\'new_item_name\' => __( \'New Portfolio Category\' ),
\'menu_name\' => __( \'Portfolio Categories\' ),
),
\'hierarchical\' => true,
) );
$portfolio_categories = get_categories(array(\'taxonomy\' => \'portfolio_category\', \'hide_empty\'=> 0));
echo "<pre>", print_r($portfolio_categories), "</pre>";
如果我将第一个代码放在页面模板中,那么第一个代码也可以工作,因此我知道我做得很正确。请告诉我这件事
谢谢