Intereting Posts
Проблема создания настраиваемого фильтра для столбцов администратора cpt Как можно манипулировать малым mCE dom (официальный API не работает)? WP_Query упорядочен по пользовательскому полю, который является строкой даты? Слияние скрипта загрузки PHP в `functions.php` Выберите объекты из get_posts () Пользовательская таксономическая разбивка на страницы Контактная форма 7 – Отправить форму не работает После запроса Ajax Как контролировать регистрацию пользователей непосредственно на подсайтах структура шаблона для CPT не понятна поддержка языков в пользовательской теме urdu запрос для использования для ссылки на единую страницу таксономии Удалить родителя из пользовательского типа сообщения Получить свойство не-объекта при активации темы Проблемы с аргументом Shotcode Пользовательская таксономия и тип сообщения с одинаковым слизнем

Что я делаю неправильно с моей таксономией?

У меня есть тип пользовательских сообщений для зарегистрированных «номеров», а также пользовательская таксономия. Вот код:

<?php /*******************************************/ /* Rooms CPT /*******************************************/ add_action('init', 'room_register'); function room_register() { $labels = array( 'name' => _x('Rooms', 'post type general name'), 'singular_name' => _x('Room', 'post type singular name'), 'add_new' => _x('Add Room', 'add button'), 'add_new_item' => __('Add New Room'), 'edit_item' => __('Edit Room'), 'new_item' => __('New Room'), 'view_item' => __('View Room'), 'search_items' => __('Search Rooms'), 'not_found' => __('Nothing found'), 'not_found_in_trash' => __('Nothing found in Trash'), 'parent_item_colon' => '' ); $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'query_var' => true, 'rewrite' => true, 'has_archive' => true, 'capability_type' => 'post', 'hierarchical' => true, 'menu_icon' => 'dashicons-screenoptions', 'supports' => array('title','editor'), 'rewrite' => array( 'slug' => 'rooms/%room_category%', 'with_front' => false ) //'rewrite' => array('slug' => 'products') ); register_post_type( 'rooms' , $args ); } /*******************************************/ /* Rooms Taxonomy /*******************************************/ add_action( 'init', 'rooms_taxonomy', 0 ); function rooms_taxonomy(){ $labels = array( 'name' => _x( 'Room Category', 'taxonomy general name' ), 'singular_name' => _x( 'Room Category', 'taxonomy singular name' ), 'search_items' => __( 'Search Room Categories' ), 'all_items' => __( 'All Room Categories' ), 'parent_item' => __( 'Parent Room Category' ), 'parent_item_colon' => __( 'Parent Room Category:' ), 'edit_item' => __( 'Edit Room Category' ), 'update_item' => __( 'Update Room Category' ), 'add_new_item' => __( 'Add New Room Category' ), 'new_item_name' => __( 'New Room Category' ), 'menu_name' => __( 'Room Categories' ), ); $args = array( 'hierarchical' => true, 'labels' => $labels, 'show_ui' => true, 'show_in_menu' => true, 'show_admin_column' => true, 'query_var' => true, 'rewrite' => array( 'slug' => 'rooms', 'with_front' => false ), '_builtin' => false ); register_taxonomy( 'room_category', 'rooms', $args ); } 

Однако, когда я пытаюсь посетить url на своем веб-сайте:

http://www.upperhouse.org/rooms

Я получаю ошибку 404. Разве это не должно быть целевой страницей для таксономии? Очень смутно. Спасибо за любую помощь!

Solutions Collecting From Web of "Что я делаю неправильно с моей таксономией?"

Теперь, когда вы создали обычную таксономию (и slug), вам, вероятно, нужно «пересмотреть», так сказать. Перейдите в свой WordPress Admin> Settings> Permalinks и внесите изменения (обратите внимание на исходные настройки). Сохраните, затем вернитесь к исходной настройке и снова сохраните.

Ваш url новый таксономия должна работать тогда.

Джеймс, вам, вероятно, понадобится создать файл archive-rooms.php для отображения страницы. Подробнее см. Здесь. Кроме того, после регистрации типа сообщения вам нужно будет повторно сохранить свои постоянные ссылки.

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

РЕДАКТИРОВАТЬ

После того, как вы проверили свой код, я вижу, что ваша таксономия – это то же самое, что и ваш пользовательский тип сообщения. Возможно, поэтому вы получаете ошибку 404. Возможно, вы сможете достичь этой функциональности:

  1. Изменение типа таксономического пула и индивидуального пула сообщений должно быть уникальным.

ИЛИ

  1. Настройка структуры permalink на /%postname%/ и следуйте инструкциям из этой статьи .

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

вам нужно обновить свои постоянные ссылки как состояние @REactionFaye. Более процедурный метод заключается в использовании правил перезаписи флеша.

Вы можете увидеть эту страницу на wordpress codex: https://codex.wordpress.org/Function_Reference/register_post_type :

Если вы регистрируете тип сообщения внутри плагина, вызовите flush_rewrite_rules () в вашем крючке активации и деактивации (см. Раздел «Очистка перезаписи при активации» ниже). Если flush_rewrite_rules () не используется, вам придется вручную перейти в «Настройки»> «Перманентные ссылки» и обновить структуру permalink до того, как ваш пользовательский тип сообщения покажет правильную структуру.

Если код находится в плагине:

 add_action( 'init', 'my_cpt_init' ); function my_cpt_init() { register_post_type( ... ); } function my_rewrite_flush() { // First, we "add" the custom post type via the above written function. // Note: "add" is written with quotes, as CPTs don't get added to the DB, // They are only referenced in the post_type column with a post entry, // when you add a post of this CPT. my_cpt_init(); // ATTENTION: This is *only* done during plugin activation hook in this example! // You should *NEVER EVER* do this on every page load!! flush_rewrite_rules(); } register_activation_hook( __FILE__, 'my_rewrite_flush' ); 

а если это в вашей теме:

 add_action( 'init', 'my_cpt_init' ); function my_cpt_init() { register_post_type( ... ); } function my_rewrite_flush() { my_cpt_init(); flush_rewrite_rules(); } add_action( 'after_switch_theme', 'my_rewrite_flush' ); 

На этой странице также много других положительных героев.

что касается проблемы. вы можете проверить правило перезаписи для катехизации комнаты и посмотреть, можете ли вы загрузить его, просто сказав: (ваша категория не должна быть именем CPT, поэтому я изменил «комнату» на «комнаты-типы».

  'rewrite' => array( 'slug' => 'room-types', 'with_front' => false ), 

и измените реальную переписку CPT на это:

  'rewrite' => array( 'slug' => 'rooms', 'with_front' => false ) 

Наконец, в качестве побочного элемента, чтобы убедиться, что в настоящее время или в будущем нет конфликтов, особенно потому, что вы уже используете перезаписи, вы не должны использовать такой общий термин для своего cpt … попробуйте добавить префикс. т.е.: rt_rooms. (этот совет также из кода, но сохранил меня раньше)

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