Intereting Posts

URL с иерархическими таксономиями и одинаковым слизью для всех терминов и суб-терминов

У меня есть «домашний» cpt и иерархическая пользовательская таксономия «местоположения» . Постоянная ссылка

/%category%/%postname% 

Термины в иерархической таксономии:

usa >> new-york

германия >> берлин

Код в моих functions.php:

 // Register Taxonomy locations function register_taxonomy_locations() { $labels = array( 'name' => _x( 'Locations', 'Taxonomy General Name', 'genesis' ), 'singular_name' => _x( 'Location', 'Taxonomy Singular Name', 'genesis' ), 'menu_name' => __( 'Locations', 'genesis' ), 'all_items' => __( 'All Locations', 'genesis' ), 'parent_item' => __( 'Parent Location', 'genesis' ), 'parent_item_colon' => __( 'Parent Location:', 'genesis' ), 'new_item_name' => __( 'New Location Name', 'genesis' ), 'add_new_item' => __( 'Add New Location', 'genesis' ), 'edit_item' => __( 'Edit Location', 'genesis' ), 'update_item' => __( 'Update Location', 'genesis' ), 'view_item' => __( 'View Location', 'genesis' ), 'separate_items_with_commas' => __( 'Separate Locations with commas', 'genesis' ), 'add_or_remove_items' => __( 'Add or remove Locations', 'genesis' ), 'choose_from_most_used' => __( 'Choose from the most used', 'genesis' ), 'popular_items' => __( 'Popular Locations', 'genesis' ), 'search_items' => __( 'Search Locations', 'genesis' ), 'not_found' => __( 'Not Found', 'genesis' ), 'no_terms' => __( 'No Locations', 'genesis' ), 'items_list' => __( 'Locations list', 'genesis' ), 'items_list_navigation' => __( 'Locations list navigation', 'genesis' ), ); $rewrite = array( 'slug' => 'houses', 'with_front' => true, 'hierarchical' => false, ); $args = array( 'labels' => $labels, 'hierarchical' => true, 'public' => true, 'show_ui' => true, 'show_admin_column' => true, 'show_in_nav_menus' => true, 'show_tagcloud' => true, 'query_var' => true, 'rewrite' => $rewrite, ); register_taxonomy( 'locations', array( 'house' ), $args ); } add_action( 'init', 'register_taxonomy_locations', 0 ); // Register CPT House function register_cpt_house() { $labels = array( 'name' => _x( 'Houses', 'Post Type General Name', 'genesis' ), 'singular_name' => _x( 'House', 'Post Type Singular Name', 'genesis' ), 'menu_name' => __( 'House', 'genesis' ), 'name_admin_bar' => __( 'Houses', 'genesis' ), 'archives' => __( 'House Archives', 'genesis' ), 'attributes' => __( 'House Attributes', 'genesis' ), 'parent_item_colon' => __( 'Parent House:', 'genesis' ), 'all_items' => __( 'All Houses', 'genesis' ), 'add_new_item' => __( 'Add New House', 'genesis' ), 'add_new' => __( 'Add New', 'genesis' ), 'new_item' => __( 'New House', 'genesis' ), 'edit_item' => __( 'Edit House', 'genesis' ), 'update_item' => __( 'Update House', 'genesis' ), 'view_item' => __( 'View House', 'genesis' ), 'view_items' => __( 'View Houses', 'genesis' ), 'search_items' => __( 'Search House', 'genesis' ), 'not_found' => __( 'Not found', 'genesis' ), 'not_found_in_trash' => __( 'Not found in Trash', 'genesis' ), 'featured_image' => __( 'Featured Image', 'genesis' ), 'set_featured_image' => __( 'Set featured image', 'genesis' ), 'remove_featured_image' => __( 'Remove featured image', 'genesis' ), 'use_featured_image' => __( 'Use as featured image', 'genesis' ), 'uploaded_to_this_item' => __( 'Uploaded to this House', 'genesis' ), 'items_list' => __( 'Houses list', 'genesis' ), 'items_list_navigation' => __( 'Houses list navigation', 'genesis' ), 'filter_items_list' => __( 'Filter Houses list', 'genesis' ), ); $rewrite = array( 'slug' => 'house', 'with_front' => true, 'pages' => true, 'feeds' => true, ); $args = array( 'label' => __( 'House', 'genesis' ), 'description' => __( 'CPT House', 'genesis' ), 'labels' => $labels, 'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail', ), 'taxonomies' => array( 'locations' ), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'menu_icon' => 'dashicons-admin-home', 'show_in_admin_bar' => true, 'show_in_nav_menus' => true, 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'rewrite' => $rewrite, 'capability_type' => 'post', 'query_var' => true, 'permalink_epmask' => EP_PERMALINK, 'show_in_rest' => false, ); register_post_type( 'house', $args ); } add_action( 'init', 'register_cpt_house', 0 ); // Add Archive Settings option to house CPT add_post_type_support( 'house', 'genesis-cpt-archives-settings' ); 

Таким образом, для URL-адреса одного домашнего сайта https://website.com/house/house-1 , для URL-адреса родительского термина должен быть https://website.com/houses/usa, а для суб-временной страницы следует https://website.com/houses/new-york

При просмотре любого дома URL-адрес – https://website.com/house/house-1 , https://website.com/house/house-2 и т. Д., Что является правильным.

При просмотре родительского термина, например https://website.com/houses/usa или https://website.com/houses/germany , он показывает дома в этих родительских терминах, что является правильным.

Но при просмотре суб-временной страницы, например https://website.com/houses/new-york или https://website.com/houses/berlin , это 404. Я не могу найти причину.

Конечно, https://website.com/houses/usa/new-york или https://website.com/usa/new-york тоже не работают, но я не хочу этого.

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

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

заранее спасибо

** ОБНОВЛЕНО **

Код выше работает хорошо, когда есть только одна таксономия за один cpt. Проблема возникает, когда вы добавляете еще одну таксономию с тем же кодом, что и выше (очевидно, сменяясь на новое имя таксономии). Для краткости я описал проблему с одной таксономией. Извините за это, я должен был указать, что есть больше таксономий. С каждой таксономией мне нужно иметь один и тот же слизняк для каждого термина, например:

 https://website.com/houses/term-of-taxonomy-A/ https://website.com/houses/sub-term-of-taxonomy-A/ https://website.com/houses/term-of-taxonomy-B/ https://website.com/houses/sub-term-of-taxonomy-B/ 

Solutions Collecting From Web of "URL с иерархическими таксономиями и одинаковым слизью для всех терминов и суб-терминов"