Постоянная ссылка на пользовательский тип сообщения / пользовательскую таксономию. Застрял с 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; } 

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