404 для пользовательской таксономии?


Почему я получаю 404 для своей пользовательской таксономии?

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

add_action('init', 'create_publication_categories');
function create_publication_categories() {
    $args = array(
        'label' => __('Categories'),
        'has_archive' =>  true,
        'hierarchical' => true,
        'rewrite' => array(
            'slug' => 'topics',
            'with_front' => false
        ),
    );
    $postTypes = array(
        'publication'
    );
    $taxonomy = 'publication';
    register_taxonomy($taxonomy, $postTypes, $args);
}

Итак, у меня есть шаблон под названием taxonomy-publication.php, но я все равно получаю 404.

Я сбросил постоянную ссылку после этого . И другие ответы, такие как это и это.

Но я все равно получаю 404. Есть идеи, что я пропустил?

Author: laukok, 2018-08-20

1 answers

Вы используете один и тот же слаг publication для пользовательской таксономии и пользовательского типа записи. Слизняк должен быть уникальным.


Еще одна вещь (не связанная с 404) - это flush_rules. Как вы можете прочитать здесь сброс на крючке init - плохая идея.

Важный:

  • Очистка правил перезаписи - дорогостоящая операция, существуют учебные пособия и примеры, которые предлагают выполнить ее на крючке init. Это плохая практика. Это должно выполняться либо при "выключении", либо при активации плагина/темы (de).
  • Правила промывки один раз (лучше хранить состояние в опции, а не activation или deactivation, потому что на нескольких сайтах они бесполезны), или когда вы знаете, что правила перезаписи необходимо изменить. Не делайте этого ни на каком крючке, который будет срабатывать на регулярной основе. Более подробная информация в комментариях к сообщению инженера WP: Пользовательский тип сообщения и постоянная ссылка
  • Убедитесь, что пользовательские типы записей и таксономии должным образом зарегистрированы перед сбросом правил перезаписи, особенно во время активации плагина: Контрольный список активации для разработчиков плагинов WordPress (недоступен)

Пример

Правила промывки при активации темы:

add_action( 'after_switch_theme', 'custom_taxonomy_flush_rewrite' );
function custom_taxonomy_flush_rewrite() {
    global $wp_rewrite;
    $wp_rewrite->flush_rules();
}
 3
Author: nmr, 2018-08-20 20:36:30