Intereting Posts
Есть что-то вроде admin_notices для переднего конца? Как связать 3 компонента wordpress друг с другом (создать отношения с базой данных) Как управлять отношениями привязки для конкретных сообщений в WP 3.5+ Создание пользовательской роли нескольких пользователей для снижения возможностей Перенаправление в архив – одно сообщение имеет определенный термин, назначенный ему? Имеет ли WordPress что-то вроде типа контента? Показать тип персонализированного типа категории X на странице архива категории X? Можно ли добавить новые роли пользователей? Создание многоязычного многоузлового Проверьте, может ли пользователь удалить сообщение Редактировать пропущенный список пользователей в WordPress Network? Как удалить неиспользуемые загрузки аватара в buddypress Как получить functions.php, чтобы поговорить с options.php Как предотвратить дублирование сообщений с помощью wp_insert_post на single.php? Функция сканирования изображения, прикрепления его к сообщению, установка его как признака

Как создать страницу архива для таксономических условий в пользовательском типе сообщений

Мне нужно создать пользовательские термины таксономии страницы архива, которые находятся в настраиваемом типе сообщений. Он настроен как CPT> Пользовательская таксономия> Соглашения о таксономии.

У меня есть настраиваемый тип сообщений, называемый «Проекты», и при создании сообщения пользователь должен выбрать тип проекта для публикации (например, «Строительство, обслуживание и т. Д.»). Но мне нужно создать страницы архива для отдельных терминов. Я искал и работал над ним через пробную ошибку в течение нескольких часов и просто продолжал стучать головой в стену.

Solutions Collecting From Web of "Как создать страницу архива для таксономических условий в пользовательском типе сообщений"

В WP Codex есть пример, который должен работать на вас:

Попробуйте следующее соглашение об именах для шаблона архива термина таксономии:

taxonomy-{taxonomy}-{term}.php 

Итак, допустим, у вас есть CPT с названием «Проекты», таксономия «Техническое обслуживание» и термин в таксономии «Профессионал». Тогда ваше соглашение об именах будет:

 taxonomy-maintenance-professional.php 

Во-первых, WordPress не предлагает встроенного решения для отображения сообщений определенного типа сообщений и определенного таксономического термина . Я говорю о чем-то вроде get_term_archive_link_for_post_type( $term, $post_type ) или около того.

Поэтому вы должны сделать это сами.

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


WordPress может обрабатывать несколько запросов vars – один из них – тот, который создает ваша таксономия.

Предположим, у вас есть пользовательский тип сообщения с projects slug.
Затем у вас есть пользовательская таксономия, имеющая slug project_type .
И у вас есть термин с construction слизней в этой самой таксономии.

Затем посещение ?post_type=projects&project_type=construction будет отображать архив всех проектов, имеющих (по крайней мере) конструкцию в качестве типа проекта .

WordPress будет интерпретировать этот запрос в виде временного архива и, следовательно, переписать URL-адрес в соответствии с вашими параметрами постоянной привязки и прикрепить тип сообщения как запрос var к URL-адресу. В обычном случае это приведет к /project_type/construction?post_type=projects .

Примечание. Вы можете явно изменить запрос var для пользовательской таксономии. В этом случае использование таксономии slug как запроса var (например, project_type=construction ) больше не будет работать. Вы должны использовать запрос var, который вы явно указали с помощью register_taxonomy .


И вот пример создания списка ссылок для всех условий конкретной таксономии:

 $args = array( 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => TRUE, 'fields' => 'all', ); $terms = get_terms( 'project_type', $args); if ( ! is_wp_error( $terms ) && ! empty( $terms ) ) { echo '<ul>'; foreach ( $terms as $term ) { $url = get_term_link( $term ); if ( is_wp_error( $url ) ) { continue; } $url = add_query_arg( 'post_type', 'projects', $url ); printf( '<li><a href="%s">%s</a></li>', $url, $term->name ); } echo '</ul>'; } , $args = array( 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => TRUE, 'fields' => 'all', ); $terms = get_terms( 'project_type', $args); if ( ! is_wp_error( $terms ) && ! empty( $terms ) ) { echo '<ul>'; foreach ( $terms as $term ) { $url = get_term_link( $term ); if ( is_wp_error( $url ) ) { continue; } $url = add_query_arg( 'post_type', 'projects', $url ); printf( '<li><a href="%s">%s</a></li>', $url, $term->name ); } echo '</ul>'; }