Intereting Posts
первоначальный порядок сортировки для сортируемого настраиваемого столбца в admin В jquery используйте переменную php для выполнения файла enqueued jquery функция запуска при входе в класс Как добавить содержимое страницы на другую страницу Показать теги популярных (по просмотрам) сообщений Не показывать определенный div на главной странице? персонализированный планировщик сообщений для черновиков Как исправить пользовательскую цепочку WordPress с разбиением на страницы на однопользовательский просмотр? Более одной динамической боковой панели Изменить размер миниатюры администратора для настраиваемого типа сообщений Создание меню ресторана Создание программного обеспечения для промежуточной среды WordPress Кодирование заголовка виджетов WordPress Как распечатать имена меню в цикле foreach? Изменение кнопки проверки WooCommerce – возврат к нормальному состоянию

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 с иерархическими таксономиями и одинаковым слизью для всех терминов и суб-терминов"