Я создаю тему WordPress для звукозаписывающей компании. Одним из аспектов является видеогалерея.
Я создал галерею, используя пользовательский тип сообщений под названием «видео». Код ниже — это то, что я поместил в свой файл functions.php для настройки типа записи:
add_action( 'init', 'create_my_post_types' );
function create_my_post_types() {
register_post_type( 'videos',
array(
'labels' => array(
'name' => __( 'Videos' ),
'singular_name' => __( 'Video' ),
'add_new' => 'Add New Video',
'edit' => 'Edit Video'
),
'public' => true,
'exclude_from_search' => false,
'supports' => array( 'title', 'editor', 'thumbnail','page-attributes','excerpt' ),
'rewrite' => array( 'slug' => 'videos', 'with_front' => false ),
));
}
Я также создал пользовательскую таксономию под названием «исполнители», чтобы я мог назначать имя исполнителя каждому загружаемому видео.
add_action( 'init', 'create_videos_taxonomies' );
function create_videos_taxonomies() {
register_taxonomy(
'artist',
'videos',
array(
'hierarchical' => false,
'label' => 'Artist',
'query_var' => true,
'show_tagcloud' => true,
'show_ui' => true,
'rewrite'=>array('slug' => 'artists', 'with_front' => false)
)
);
}
На данный момент все работает нормально на бэкэнде, и страница видео успешно возвращает все видео.
В другом разделе моего веб-сайта у меня есть страницы для каждого исполнителя. На любой из этих страниц исполнителя я хотел бы иметь возможность просмотреть все видео в пользовательском типе сообщений, который я создал, и возвращать результаты только в заданной таксономии. Ниже приведен мой код для циклического просмотра пользовательского типа сообщения:
<?php $loop = new WP_Query( array( 'post_type' => 'videos', 'post_child' => 0, 'posts_per_page' => 5 ) ); ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
<?php the_post_thumbnail( 'video' ); ?>
<?php the_content(); ?>
<?php endwhile; ?>
Это успешно перебирает видео и возвращает 5 самых последних. Мне нужно это, чтобы просмотреть все видео с определенным слагом или идентификатором таксономии. Например, я создал таксономию под названием «Smash Palace», и у нее есть слаг «smash-palace» и идентификатор «17». Любая идея, как я могу зациклить этот пользовательский тип сообщения и возвращать результаты только в данной таксономии?
Проверьте документацию здесь:
http://codex.wordpress.org/Function_Reference/WP_Query#Taxonomy_Parameters
Вы захотите добавить это в свой wp_query:
Другими словами, ваш новый запрос будет выглядеть примерно так:
РЕДАКТИРОВАТЬ: я ответил на этот вопрос, исходя из предположения, что «Smash Palace» на самом деле не отдельная таксономия, а термин в вашей существующей таксономии «Исполнители». Если «Smash Palace» на самом деле является отдельной таксономией, то должно работать следующее:
Я заметил одну вещь: если вы не определяете «термины» в
tax_query
массиве, вы можете получить неожиданные результаты (или вообще ничего).Вы можете запросить несколько терминов одновременно следующим образом:
Я надеюсь, что это поможет — дайте мне знать, правильно ли я понял ваш вопрос.
Просто чтобы подтвердить ваш комментарий, запросы таксономии должны включать слаг термина или идентификатор, вы не можете запрашивать только одну таксономию, должен быть предоставлен термин, независимо от того, соответствует он или нет, например..
=
или!=
..@ Джесси, рад, что смог помочь!
@ t31os, спасибо за ваш комментарий. Я заметил, что отсутствие пули дало странные результаты.