Код моего плагина ниже. В функции myPlugin_cleanup() я создаю несколько категорий и назначаю идентификатор термина 1 в качестве родителя.
Из-за известной ошибки с созданием категорий с помощью скрипта (массив category_children не создается и приводит к фатальной ошибке при доступе к страницам, содержащим списки категорий), я разместил вызов clean_term_cache() непосредственно под функцией, которая создает мои категории..
Однако он не работает. Параметр category_children не создается.
Интересно, что если я создам плагин, единственной функцией которого является выполнение вызова clean_term_cache(»,’category’), он решит проблему и создаст параметр category_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');
?>
Обновление: кажется, что исправление для этого заключается в вызове _get_term_hierarchy(‘category’) NOT clean_term_cache(»,’category’);
Вы можете это объяснить?
После создания около 40 тестовых установок WP сегодня на локальном хосте, вот что я могу сообщить:
Похоже, что правильный вызов функции для перестроения параметров category_children:
Раньше я пытался позвонить:
И я вызывал его сразу после того, как мои категории были созданы в коде моего плагина. Однако я никогда не мог заставить эту функцию что-либо делать при вызове из того же плагина, который я использую для создания категорий. Интересно, что я мог бы поместить эту функцию в отдельный плагин и запустить ее (после моего плагина для создания категорий), и он идеально перестроил бы массив опций category_parents.
Причина, по которой его нельзя вызвать в том же скрипте, который создает категории, по-видимому, связана с особым поведением clean_term_cache(), о котором лучше всего говорит «foofy» в комментарии к заявке на отслеживание ошибок :
Я надеюсь, что это поможет кому-то!
Я должен сделать это: