Intereting Posts
Экран входа в WordPress AJAX если post id соответствует этим id, тогда сделайте это Где плагин или виджет кэшируют свои результаты? Получение подсчета короткого кода, который является вложенным Как установить ссылку на страницу пользовательской архивации add_rewrite_rule для поиска Гравитационные формы настраивают разметку поля для той же формы, которая появляется в разных местах Переадресация htaccess для всех категорий, преобразованных в теги, теперь показывающая 404 Фильтровать сообщения по категориям ajax покажет все сообщения Как использовать мета-тег канонического URL, чтобы избежать дублирования проблем с домашними страницами WP Показать все сообщения для таксономического термина в нескольких пользовательских типах сообщений аргументы для фильтра comment_notification_text Когда можно изменить тему нанести ущерб сайту? Есть ли фильтр для скрипта enqueue, чтобы удалить свойство type = "text / javascript" Как получить последний вход Доступность Дата и время

Постоянная ссылка на пользовательский тип сообщения / пользовательскую таксономию. Застрял с 404 в одном посте

Я просмотрел noh в StackOverflow и WP.SE.

Как и многие передо мной, я просто хочу эту структуру

mysite.com/custom-post-type/custom-taxonomy-term/post-name 

Или, другими словами,

 mysite.com/publication/book/post-name (single post) mysite.com/publication/book/ (all posts in the term 'book') mysite.com/publication/ (all posts in this publication CPT) 

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

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

Я попытался открыть страницу Permalink и установить flush_rewrite_rules() безрезультатно. Я все еще не могу открыть одну страницу.

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

Поэтому вместо publication (переписать пул для этого налога, в соответствии с моим именем типа пользовательского сообщения), у меня был бы type по умолчанию (по умолчанию для этого налога). Который победил бы цель.

Вот мой код.

Таксономия.

  function cptui_register_my_taxes_type() { /** * Taxonomy: Types. */ $labels = array( "name" => __( 'Types', 'mysite' ), "singular_name" => __( 'Type', 'mysite' ), "menu_name" => __( 'Types', 'mysite' ), "all_items" => __( 'All Types', 'mysite' ), "edit_item" => __( 'Edit Types', 'mysite' ), "view_item" => __( 'View Type', 'mysite' ), "update_item" => __( 'Update Type Name', 'mysite' ), "add_new_item" => __( 'Add New Type', 'mysite' ), "new_item_name" => __( 'New Type Name', 'mysite' ), "parent_item" => __( 'Parent Type', 'mysite' ), "parent_item_colon" => __( 'Parent Type:', 'mysite' ), "search_items" => __( 'Search Types', 'mysite' ), "popular_items" => __( 'Popular Types', 'mysite' ), "separate_items_with_commas" => __( 'Separate Types with commas', 'mysite' ), "add_or_remove_items" => __( 'Add or remove Types', 'mysite' ), "choose_from_most_used" => __( 'Choose from the most used Types', 'mysite' ), "not_found" => __( 'No Types found', 'mysite' ), "no_terms" => __( 'No types', 'mysite' ), "items_list_navigation" => __( 'Types list navigation', 'mysite' ), "items_list" => __( 'Types list', 'mysite' ), ); $args = array( "label" => __( 'Types', 'mysite' ), "labels" => $labels, "public" => true, "hierarchical" => true, "label" => "Types", "show_ui" => true, "show_in_menu" => true, "show_in_nav_menus" => true, "query_var" => true, "rewrite" => array( 'slug' => 'publication', 'with_front' => true, 'hierarchical' => true, ), "show_admin_column" => true, "show_in_rest" => false, "rest_base" => "", "show_in_quick_edit" => true, ); register_taxonomy( "tyoe", array( "publication" ), $args ); } add_action( 'init', 'cptui_register_my_taxes_type' ); 

Пользовательский тип сообщения

 function cptui_register_my_cpts_publication() { /** * Post Type: Publication. */ $labels = array( "name" => __( 'Publication', 'mysite' ), "singular_name" => __( 'Publication', 'mysite' ), "menu_name" => __( 'Publication', 'mysite' ), "all_items" => __( 'All Publication', 'mysite' ), "add_new" => __( 'Add New', 'mysite' ), "add_new_item" => __( 'Add New Publication', 'mysite' ), "edit_item" => __( 'Edit Publication', 'mysite' ), "new_item" => __( 'New Publication', 'mysite' ), "view_item" => __( 'View Publication', 'mysite' ), "view_items" => __( 'View Publications', 'mysite' ), "search_items" => __( 'Search Publications', 'mysite' ), "not_found" => __( 'No publication found', 'mysite' ), "not_found_in_trash" => __( 'No trashed publications', 'mysite' ), "parent_item_colon" => __( 'Parent Publication:', 'mysite' ), "featured_image" => __( 'Cover or illustration', 'mysite' ), "set_featured_image" => __( 'Set cover or illustration for this publication', 'mysite' ), "remove_featured_image" => __( 'Remove cover or illustration for this publication', 'mysite' ), "use_featured_image" => __( 'Use as cover or illustration for this publication', 'mysite' ), "archives" => __( 'Publication archives', 'mysite' ), "insert_into_item" => __( 'Insert into publication info', 'mysite' ), "uploaded_to_this_item" => __( 'Uploaded to publication info', 'mysite' ), "filter_items_list" => __( 'Filter publication', 'mysite' ), "items_list_navigation" => __( 'Publication list navigation', 'mysite' ), "items_list" => __( 'Publication list', 'mysite' ), "attributes" => __( 'Publication Attributes', 'mysite' ), "parent_item_colon" => __( 'Parent Publication:', 'mysite' ), ); $args = array( "label" => __( 'Publication', 'mysite' ), "labels" => $labels, "description" => "", "public" => true, "publicly_queryable" => true, "show_ui" => true, "show_in_rest" => false, "rest_base" => "", "has_archive" => true, "show_in_menu" => true, "exclude_from_search" => false, "capability_type" => "post", "map_meta_cap" => true, "hierarchical" => false, "rewrite" => array( "slug" => "publication/%type%", "with_front" => false ), "query_var" => true, "menu_position" => 6, "menu_icon" => "dashicons-format-aside", "supports" => array( "title", "editor", "thumbnail", "comments", "revisions" ), "taxonomies" => array( "type" ), ); register_post_type( "publication", $args ); } add_action( 'init', 'cptui_register_my_cpts_publication' ); 

Настройка постоянной ссылки

 function change_permalink_publication( $link, $post ) { if ( $post->post_type === 'publication' ) { if ( $terms = get_the_terms( $post->ID, 'type' ) ) $link = str_replace( '%type%', current( $terms )->slug, $link ); } return $link; } add_filter( 'post_type_link', 'change_permalink_publication', 10, 2 ); add_action( 'generate_rewrite_rules', 'change_permalink_publication_pagination' ); function change_permalink_publication_pagination( $wp_rewrite ) { unset($wp_rewrite->rules['publication/([^/]+)/page/?([0-9]{1,})/?$']); $wp_rewrite->rules = array( 'publication/?$' => $wp_rewrite->index . '?post_type=publication', 'publication/page/?([0-9]{1,})/?$' => $wp_rewrite->index . '?post_type=publication&paged=' . $wp_rewrite->preg_index( 1 ), 'publication/([^/]+)/page/?([0-9]{1,})/?$' => $wp_rewrite->index . '?type=' . $wp_rewrite->preg_index( 1 ) . '&paged=' . $wp_rewrite->preg_index( 2 ), ) + $wp_rewrite->rules; } в function change_permalink_publication( $link, $post ) { if ( $post->post_type === 'publication' ) { if ( $terms = get_the_terms( $post->ID, 'type' ) ) $link = str_replace( '%type%', current( $terms )->slug, $link ); } return $link; } add_filter( 'post_type_link', 'change_permalink_publication', 10, 2 ); add_action( 'generate_rewrite_rules', 'change_permalink_publication_pagination' ); function change_permalink_publication_pagination( $wp_rewrite ) { unset($wp_rewrite->rules['publication/([^/]+)/page/?([0-9]{1,})/?$']); $wp_rewrite->rules = array( 'publication/?$' => $wp_rewrite->index . '?post_type=publication', 'publication/page/?([0-9]{1,})/?$' => $wp_rewrite->index . '?post_type=publication&paged=' . $wp_rewrite->preg_index( 1 ), 'publication/([^/]+)/page/?([0-9]{1,})/?$' => $wp_rewrite->index . '?type=' . $wp_rewrite->preg_index( 1 ) . '&paged=' . $wp_rewrite->preg_index( 2 ), ) + $wp_rewrite->rules; } 

Есть ли способ исправить это?