Intereting Posts
Перенаправление старой ссылки на новую Какова цель выхода из системы после обновления WordPress? WP_Query tax_query – Показать результаты, если у ребенка есть родительский элемент X Как удалить фильтр, анонимный объект? Как добавить страницу вклада Вставить sometext после первого h3 в содержании Обнаружение смены устройства (рабочий стол, планшет или мобильный) в Настройщике Меню «Условное Навигационное меню» Меню «Внутри» на разных сайтах Multisite Каковы крючки, выполняемые до / после, когда удаление категории? Плагин для загрузки Android Marketplace? Возможно ли иметь два разных превью сообщения (т. Е. Два шаблона для одного сообщения)? Пользовательские отношения таксономии (например: классификация растений) Создание случайного числа в каждом сообщении и сохранение его в базе данных Лучший способ передать аргументы на другую страницу в WordPress Вернуться теги сообщения с описанием

Автоматическое создание дочернего пользовательского сообщения при создании пользовательского сообщения

У меня есть пользовательский тип сообщения, называемый «художник». Всякий раз, когда я создаю пост «художника», я получаю следующую ссылку: www.myexample.com/artist/artist-name

Это мой код single-artist.php:

<?php get_header(); ?> <?php $query = new WP_Query( 'post_type=artist' ); ?> <?php while ( $query->have_posts() ) : $query->the_post(); ?> <div class="artist-info"> <p>Artist name</p> <a href="/hire-artist/artist-name">Hire artist</a> <div> <?php endwhile ?> <?php wp_reset_postdata(); ?> <?php get_footer(); ?> 

Это код для регистрации настраиваемого сообщения:

 function codex_custom_init() { register_post_type( 'artist', array( 'public' => true, 'label' => 'Artists', 'menu_position' => 5, 'supports' => array( 'title', 'editor', 'excerpt', 'custom-fields', 'thumbnail' ), ) ); } add_action( 'init', 'codex_custom_init' ); 

Я хочу сделать это, когда создаётся пост «artist», а также «подпоста» его создается с использованием этой постоянной ссылки: www.myexample.com/hire-artist/artist-name

Таким образом, оба сообщения остаются связанными, но являются разными типами сообщений, так как я буду использовать другой шаблон для подзаголовка «Аренда-художник». Также ссылка в теге a получает ссылку на дочерний пользовательский пост.

Можно ли это сделать? Какой был бы лучший способ сделать эту автоматизацию?

Solutions Collecting From Web of "Автоматическое создание дочернего пользовательского сообщения при создании пользовательского сообщения"

Вместо того, чтобы создавать другое сообщение, которое, как представляется, предназначено исключительно для создания другого шаблона, я бы добавил конечную точку перезаписи для поддержки дополнительного сегмента в конце URL-адресов исполнителя. В этом случае ваши URL-адреса будут следующими:

http://www.example.com/artist/artist-name/hire/

Преимущество этого заключается в том, что все данные, относящиеся к художнику, могут оставаться в пределах одной должности художника. Когда эти сообщения отображаются на переднем конце, запрашиваемый объект содержит данные исполнителя, не требуется соединение нескольких сообщений.

Для этого сначала добавим конечную точку:

 function wpd_hire_endpoint(){ add_rewrite_endpoint( 'hire', EP_PERMALINK ); } add_action( 'init', 'wpd_hire_endpoint' ); 

Обратите внимание, что если ваш тип сообщения является иерархическим, вам нужно использовать EP_PAGES конечной точки EP_PAGES вместо EP_PERMALINK .

Затем добавьте фильтр в single_template для загрузки шаблона найма при посещении этих URL-адресов:

 function wpd_hire_template( $template = '' ) { global $wp_query; if( ! array_key_exists( 'hire', $wp_query->query_vars ) ) return $template; $template = locate_template( 'hire.php' ); return $template; } add_filter( 'single_template', 'wpd_hire_template' ); 

Не забудьте сбросить правила перезаписи после добавления конечной точки.

EDIT – добавление дополнительного правила перезаписи для получения альтернативной структуры URL:

 add_rewrite_rule( 'hire-artist/([^/]+)/?$', 'index.php?artist=$matches[1]&hire=true', 'top' );