scottb
  • 0
Гуру

Отсутствует параметр «category_children» при динамическом создании категорий через плагин

  • 0

Я выделил источник фатальной ошибки, возникающей при предварительном просмотре нового сайта сразу после установки и активации подключаемого модуля, над которым я работаю.

Проблема заключается в том, что элемент «category_children» в таблице параметров не создается.

Интересно, что два действия запускают WP для создания опции category_children. Это: (1) Активация темы, которая содержит код для создания категорий и (2) Простой доступ к менеджеру категорий.

Если я сделаю что-либо из этого, после активации плагина будет создана опция category_children (предположительно из-за проверок в активации темы или загрузки edit-tags.php), и ошибка исчезнет.

Вот код, который я использую в своем плагине для создания категорий (выполняется только при активации плагина):

        if(!get_cat_ID('nofollow')){wp_create_category('nofollow',1);}
        if(!get_cat_ID('noindex')){wp_create_category('noindex',1);}

Что мне не хватает? Нужно ли явно вызывать метод, чтобы WordPress сгенерировал массив параметров category_children для этих элементов?

ОБНОВЛЕНИЕ: благодаря приведенной ниже помощи scribu по причине этой ошибки я обнаружил, что ЧАСТИЧНОЕ исправление этой ошибки состоит в том, чтобы поместить эту строку сразу после завершения моих вызовов wp_create_category():

clean_term_cache('','category'); 

Однако это не работает при вызове в том же плагине, который создает категории. Мне пришлось разместить его в отдельном плагине, который активируется отдельно от плагина, который создает мои категории.

Share
  1. Это известная (и неприятная) ошибка в коде кэширования иерархии таксономии:

    http://core.trac.wordpress.org/ticket/14485

    По сути, вам нужно принудительно обновить, удалив параметр.

    • 0
  2. Была такая же проблема. Это было решено добавлением:delete_option("category_children")

    После вставки категорий видимо это сбрасывает кеш для категорий. Другие обходные пути не помогли мне.

    • 0

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

You must login to add an answer.