связанные сообщения - удаление тегов из определенного типа сообщений
В настоящее время я использую следующий фрагмент кода для отображения связанных сообщений в моем отдельном шаблоне.
<?php
$orig_post = $post;
global $post;
$tags = wp_get_post_tags($post->ID);
if ($tags) {
$tag_ids = array();
foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
$args=array(
'tag__in' => $tag_ids,
'post__not_in' => array($post->ID),
'posts_per_page'=>5, // Number of related videos that will be shown.
'caller_get_posts'=>1
);
$my_query = new wp_query( $args );
if( $my_query->have_posts() ) {
echo '<section id="related-videos"><h3><span>Related Videos</span></h3><ul>';
while( $my_query->have_posts() ) {
$my_query->the_post(); ?>
<li>
<a class="related-thumb" href="<? the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_post_thumbnail('related-thumb'); ?></a>
<section class="related-content">
<a href="<? the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a>
</section>
</li>
<? }
echo '</ul></section>';
}
}
$post = $orig_post;
wp_reset_query();
Мне интересно, есть ли способ, которым я могу извлекать теги только из определенного типа сообщений. Может быть, добавить что-то вроде 'post_type=videos'
где-нибудь? Хотя не уверен, где именно. Кто-нибудь может мне помочь? Спасибо.
3 answers
Что-то точно такое же, как 'post_type' => 'videos'
где-то в вашем массиве $args
:)
Я не уверен в вашем описании - вы хотите отображать это только для сообщений определенного типа или отображать только сообщения определенного типа как связанные?
Ваше предположение точно, запрос принимает аргумент post_type
, см. Параметры типа и статуса в Кодексе.
Я не смог найти способ фильтрации по типу записи при получении списка тегов. Я бы сделал что-то вроде этого:
function get_tags_per_post_type() {
$post_list = get_posts(array('post_type' => ''));
$tag_list = array();
foreach($post_list as $current_post) {
$current_tag_list = wp_get_post_tags($current_post->ID);
foreach ($current_tag_list as $tag) {
$tag_list[] = $tag->term_id;
}
}
$tag_list = array_unique($tag_list);
return $tag_list;
}
При этом извлекается список идентификаторов терминов тегов, относящихся к определенному типу записи. Если вам нужен список объектов тегов, то нам нужно будет создать функцию, которая идентифицирует повторяющийся объект тегов, добавляемый в $tag_list.
НТХ