我的插件代码如下。在myPlugin\\u cleanup()函数中,我创建了一些类别,并将术语id 1指定为父级。
由于known bug with creating categories via script (无法创建category\\u children数组,并且在访问包含类别列表的页面时会导致致命错误),我将clean\\u term\\u cache()调用直接放置在创建类别的函数下方。
然而,它不起作用。未创建category\\u children选项。
有趣的是,如果我创建一个插件,其唯一功能是执行clean\\u term\\u cache(“”,\'category\')调用,那么它可以解决问题,并使用正确的值创建category\\u children选项。
我只是不知道为什么它不能在创建类别的同一个插件中工作。
我可能会错过什么?
function myPlugin_activate(){
if ( get_option( \'myPlugin_activated\' ) !== "1"){
//comment out any function you don\'t want to run
myPlugin_copy(\'themes\');
myPlugin_copy(\'plugins\');
myPlugin_images();
myPlugin_options();
myPlugin_settings();
myPlugin_widgets();
myPlugin_links();
myPlugin_posts();
myPlugin_pages();
myPlugin_custom_menus();
myPlugin_cleanup();
clean_term_cache(\'\',\'category\'); //does not work here
update_option(\'myPlugin_activated\', "1");
}
}
function myPlugin_cleanup(){
//include dependencies
require_once(ABSPATH.\'/wp-admin/includes/taxonomy.php\');
if(!get_cat_ID(\'nofollow\')){wp_create_category(\'nofollow\',1);}
if(!get_cat_ID(\'noindex\')){wp_create_category(\'noindex\',1);}
clean_term_cache(\'\',\'category\'); //Does not appear to work here either.
}
register_activation_hook(__FILE__, \'myPlugin_activate\');
?>
最合适的回答,由SO网友:Scott B 整理而成
今天在localhost上安装了大约40个测试WP之后,我可以报告以下内容:
重建category\\u子选项的正确函数调用似乎是:
_get_term_hierarchy(\'category\')
之前,我想打电话:
clean_term_cache(\'\',\'category\')
在我的插件代码中创建了类别之后,我就调用了它。然而,当从我用来创建类别的同一个插件调用此函数时,我永远无法让它做任何事情。有趣的是,我可以将该函数放置在一个独立的插件中并运行它(在我的类别创建插件之后),它将完美地重建category\\u parents options数组。
无法在创建类别的同一脚本中调用它的原因似乎与clean\\u term\\u cache()的一种特殊行为有关,该行为最好在the bug track ticket:
只有在同一PHP请求/脚本生存期内进行多个术语更改时,这才是一个问题。clean\\u term\\u cache()在静态变量中跟踪它清理的每个分类法,不会再次清理。如果在同一个请求中进行了多个术语更改,则{$taxonomy}\\u子选项将保留层次结构,与第一次更改后一样。
我希望这对某人有帮助!