scottb
  • 0
Гуру

Вызов clean_term_cache() завершается ошибкой при вызове в том же плагине, который создает термины, успешно при отдельном вызове?

  • 0

Код моего плагина ниже. В функции 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');
?>
Share
  1. Обновление: кажется, что исправление для этого заключается в вызове _get_term_hierarchy(‘category’) NOT clean_term_cache(»,’category’);

    • 0
  2. После создания около 40 тестовых установок WP сегодня на локальном хосте, вот что я могу сообщить:

    Похоже, что правильный вызов функции для перестроения параметров category_children:

    _get_term_hierarchy('category')
    

    Раньше я пытался позвонить:

    clean_term_cache('','category')
    

    И я вызывал его сразу после того, как мои категории были созданы в коде моего плагина. Однако я никогда не мог заставить эту функцию что-либо делать при вызове из того же плагина, который я использую для создания категорий. Интересно, что я мог бы поместить эту функцию в отдельный плагин и запустить ее (после моего плагина для создания категорий), и он идеально перестроил бы массив опций category_parents.

    Причина, по которой его нельзя вызвать в том же скрипте, который создает категории, по-видимому, связана с особым поведением clean_term_cache(), о котором лучше всего говорит «foofy» в комментарии к заявке на отслеживание ошибок :

    Это проблема только в том случае, если вы вносите несколько изменений терминов в одно и то же время жизни PHP-запроса/скрипта. clean_term_cache() отслеживает каждую очищаемую таксономию в статической переменной и не очищает ее во второй раз. Если в одном и том же запросе делается несколько изменений термина, параметр {$taxonomy}_children остается с иерархией, какой она была после первого изменения.

    Я надеюсь, что это поможет кому-то!

    • 0
  3. Я должен сделать это:

    $taxnomy_name = ...;
    clean_term_cache ( _get_term_hierarchy($taxnomy_name), $taxnomy_name);
    
    • 0

Оставить ответ

You must login to add an answer.