2016-12-20 2 views
1

Я вводил категории Wordpress в свою базу данных MySQL. Это нормально, когда дело касается категорий без родителя. Но когда я добавляю дочернюю категорию, она не отображается в списке категорий Wordpress.Добавление категорий Wordpress в базу данных, изменения отображаются только после обновления через интерфейс

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

clean_term_cache($ids, $taxonomy, $clean_taxonomy); 

Найдено здесь: https://codex.wordpress.org/Function_Reference/clean_term_cache

К сожалению, до сих пор только показывает свои изменения после того, как я редактировать и сохранять одну из видимых категорий.

Так, чтобы быть ясным: вещи, которые я делаю в базе данных. Я добавляю записи в нужные таблицы. Единственная проблема заключается в том, что интерфейс администратора Wordpress не показывает изменений. Пока я не использую указанный интерфейс для редактирования/сохранения категории, видимой в интерфейсе администратора.

Также: я использую непосредственную инъекцию базы данных, потому что я использую WooCommerce + WPML. API не поддерживает создание многоязычных категорий.

+1

'clean_term_cache()' - это функция, которая будет использоваться для этого. Можете ли вы подтвердить аргументы, которые используете? В частности, '' clean_taxonomy' должен всегда быть «истинным» при создании дочерних категорий. – GentlemanMax

+0

Прямо сейчас я отслеживаю все идентификаторы категорий, которые я создаю. Это массив, который я использую в качестве первого параметра. Таксономия - это «product_cat», и по умолчанию я понимаю, что значение $ clean_taxonomy истинно по умолчанию. –

ответ

0

Проблема у меня была из-за того, что я пытался рекурсивно добавлять категории и переводить их. Мне пришлось добавить категорию в базу данных с одним переводом и впоследствии добавить другие переводы. Но всякий раз, когда я запускал функции очистки кэша, WPML также работал. Это испортило весь перевод.

В итоге я создал категорию и сразу же удалил ее после запуска всего моего кода. Казалось, это сработало.

Мне больно сердце моего программиста, чтобы поделиться этим, но именно так я исправил свою проблему. Так вот:

$temp_term = wp_insert_term('Fake category', 'product_cat', ['description' => 'Temporary category', 'slug' => 'fake-cat-temp']); 
wp_delete_term($temp_term['term_id'], 'product_cat');