Intereting Posts
Некоторые настройки плагина сохраняются после удаления и переустановки плагина Как отобразить некоторые настройки для пользователя супер администратора только с помощью API настроек Добавьте <span> в вывод <li> <? wp_nav_menu ()?> Форма поиска как элемент списка в меню? перенос содержимого из одной установки WordPress в многопользовательскую Как я могу увидеть список моих пользовательских типов сообщений последнего термина, в котором я был? Как переопределить функцию в functions.php родительской темы? Плагин Fromcraft Нажмите кнопку отправки Инструмент импорта / экспорта WordPress фактически экспортирует медиа (изображения)? передача значения нескольких родителей в короткий код Любой способ создать ревизию сообщения ТОЛЬКО с новой кнопкой в ​​Meta Box? Контактная форма не будет отправлена Настройка внешнего вида администратора для одного конкретного пользователя Получить текущие данные в массиве? как удалить + новое из области администрирования wp

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

Я боролся с этим часами.

Я пытаюсь получить эту структуру URL:
example.com/business/%custom-tax-name%/%custom-post-name%/
По индивидуальному налоговому названию я не имею в виду имя таксономии («Местоположение»), я имею в виду значение, выбранное для этого конкретного сообщения, которое будет именем города. Так,
example.com/business/long-island-city/business-name
или
example.com/business/phoenix/business-name/

Пока я сделал обычную таксономию:

 $singular = 'Merchant Location'; $plural = 'Merchant Locations'; $taxonomy_args = array( 'rewrite' => array( 'slug' => 'business-location', 'with_front' => FALSE, 'hierarchical' => FALSE ) ); // Register taxonomy ... 

и изменили ссылки в фильтре post_type_link

 function filter_business_permalinks($post_link, $post, $leavename, $sample) { if ($post->post_type == 'my_custom_post_type') { $terms = get_the_terms($post->ID, 'my_custom_taxonomy'); foreach ($terms as $term) { $post_link = str_replace('business/', 'business/'. $term->slug .'/', $post_link); break; } return $post_link; } add_filter('post_type_link', 'filter_business_permalinks', 10, 4); 

И получившийся URL-адрес после этого просто то, что я хотел, поэтому функция фильтра работает отлично. Однако, когда я нажимаю URL-адрес, он переходит к следующему:
example.com/business/long-island-city/long-island-city/business-name
который дает 404.

Что может быть причиной этого и как я могу это исправить?

Вся помощь очень ценится.

Заметка:
Я не хочу, чтобы это была структура URL-адресов:
example.com/business/location/long-island-city/business-name/
имея имя таксономии в URL-адресе.

Solutions Collecting From Web of "Пользовательские постоянные ссылки для пользовательских типов сообщений и таксономий"

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

Во-первых, зарегистрируйте таксономию вашего местоположения:

 register_taxonomy( 'location', array( 'business' ), array( 'rewrite' => array( 'slug' => 'business-location' ) ) ); 

Затем зарегистрируйте тип бизнес-сообщения. Важным моментом здесь является включение тега %location% rewrite в пул. Мы будем использовать это для замены термина местоположения в функции post_type_link :

 register_post_type( 'business', array( 'label' => 'Business', 'public' => true, 'rewrite' => array( 'slug' => 'business/%location%' ), 'hierarchical' => false ) ); 

Теперь функция поменять местами:

 function wpa_business_permalinks( $post_link, $id = 0 ){ $post = get_post($id); if ( is_object( $post ) && $post->post_type == 'business' ){ $terms = wp_get_object_terms( $post->ID, 'location' ); if( $terms ){ return str_replace( '%location%' , $terms[0]->slug , $post_link ); } } return $post_link; } add_filter( 'post_type_link', 'wpa_business_permalinks', 1, 2 );