Intereting Posts
Добавление пользовательского кода в header.php с помощью плагина Существует ли «лучшая практика» для настройки нескольких доменов в многоузловом экземпляре? Пользовательские метаполя для специального настраиваемого типа Поддерживаются ли функции WordPress $ wpdb, когда таблица заблокирована? Перенаправление пользователя на страницу, когда нет содержимого? В моем электронном адресе отображается электронное письмо, которое не работает. Что я делаю? Как получить имя блога при использовании WordPress Multisite Повторяющиеся настраиваемые метаполя Проблема защиты страницы паролем Тип сообщения администратора Необычно использовать параметры WP_Options? Дублирующие результаты отображаются в пользовательском плагине Ошибки в памяти: как лучше их отслеживать Как пропустить все прикрепленные изображения в сообщении и получить их URL один за другим Как устранить URL-адрес карты google из соображений скорости google

Удаление родительского пула из URL-адреса в настраиваемом типе сообщений

Как указано в заголовке, я хотел бы удалить родительские пули из URL-адресов для определенных типов сообщений: services.

Что-то, что изменило бы это:

http://demo.com/parent-service/child-service-1 http://demo.com/grand-parent-service/parent-service/child-service-2 http://demo.com/great-grand-parent-service/grand-parent-service/parent-service/child-service-3 etc 

Что-то вроде этого:

 http://demo.com/child-service-1 http://demo.com/child-service-2 http://demo.com/child-service-3 etc 

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

Solutions Collecting From Web of "Удаление родительского пула из URL-адреса в настраиваемом типе сообщений"

В быстром испытании я был удивлен, обнаружив, что это работает из коробки. То есть, канонический URI для дочернего поста все еще имеет родителя в пути, но дочерний пост работает так же хорошо без него (не 404, не перенаправляет). В результате, это просто вопрос фильтрации post_type_link чтобы заставить это работать, как вы просите! Следующий код должен сделать именно это:

 function wpse_101072_flatten_hierarchies( $post_link, $post ) { if ( 'service' != $post->post_type ) return $post_link; $uri = ''; foreach ( $post->ancestors as $parent ) { $uri = get_post( $parent )->post_name . "/" . $uri; } return str_replace( $uri, '', $post_link ); } add_filter( 'post_type_link', 'wpse_101072_flatten_hierarchies', 10, 2 );