Категории Wordpress не обновляются после вызова wp_insert_term

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

Я использую мультисайт WP 3.2.

Во внешнем интерфейсе сайта у меня есть инструмент, который использует wp_insert_term для добавления новой категории в любой из мультисайтовых блогов (я использую switch_to_blog(), если это имеет значение).

Затем я вызываю wp_set_object_terms(), чтобы добавить сообщение в новую созданную категорию.

Оба они работают нормально, создается новая категория, и сообщение переключается в эту категорию.

Проблема:

Постоянная ссылка на пост в новой категории выдает ошибку 404. Сообщение не добавляется к счетчику сообщений для новой категории.

Обе эти проблемы могут быть решены путем:

А) Перейдите в wp-admin -> настройки -> постоянные ссылки и сохраните постоянные ссылки Б) Перейдите в wp-admin -> сообщения -> категории -> и добавьте любую другую категорию

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

Что мы пробовали:

function flush_permalinks() {
global $wp_rewrite;
$wp_rewrite->set_permalink_structure('/%postname%/');
}
add_action('init', 'flush_permalinks');

// Это не решает

Мы также пробовали:

function flush_permalinks() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
add_action('init', 'flush_permalinks');

// Это не решает

И мы пробовали:

add_action( 'init', 'create_initial_taxonomies', 0 ); 

// Это не решает.

Заранее спасибо за любую помощь или указание нас в правильном направлении для решения!


person Erik Stromme    schedule 09.12.2011    source источник


Ответы (2)


Вы пробовали действие template_redirect вместо init

Я знаю, что он запускается раньше, чем init.

function flush_permalinks() {
    global $wp_rewrite;
    $wp_rewrite->set_permalink_structure('/%postname%/');
}
add_action('template_redirect', 'flush_permalinks');

Надеюсь, это поможет,

Ник

person Nickiler    schedule 09.12.2011
comment
Спасибо, только что попробовал template_redirect, но и с этим не повезло. - person Erik Stromme; 09.12.2011

Вам нужно очистить кеш терминов.

http://codex.wordpress.org/Function_Reference/clean_term_cache

person TheRealJAG    schedule 10.05.2012