要在WordPress中调用分类ID为1、3、7的分类下,具有相同标签的前10个内容,可以使用自定义的WordPress查询(WP_Query)。以下是实现此功能的步骤和示例代码:
步骤:
确定共同标签:
首先,你需要确定分类1、3、7下所有文章共有的标签。这可以通过查询这些分类下的所有标签并找出交集来实现。
执行主查询:
使用WP_Query来查询属于分类1、3、7且具有上述共同标签的文章,并限制结果为10篇。
示例代码:
<?php
$post_num = 10;
$specific_cat_ids = array(1, 3, 7);// 获取当前文章的标签并转换为字符串
$tags = '';
if ( get_the_tags() ) {$tags = implode('-', array_map(function($tag) {return sanitize_title($tag->name);}, get_the_tags()));
}$myposts = array();
foreach ( $specific_cat_ids as $catid ) {$args = array('posts_per_page' => $post_num,'category' => $catid,'tag' => $tags,'post__not_in' => array(get_the_ID()),'suppress_filters' => false // 确保不会过滤掉任何帖子);$query = new WP_Query($args);if ($query->have_posts()) {while ($query->have_posts()) {$query->the_post();$myposts[] = $post;}}wp_reset_postdata(); // 重置后一个查询后的数据
}if ( !empty($myposts) ) {foreach ( $myposts as $post ) {setup_postdata($post);
?><li class="media mb-2 pb-2" style="border-bottom:dashed 1px #f3f3f3;"><div class="media-body"><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><span class="text-customer">•</span> <?php the_title(); ?></a></div></li>
<?php}wp_reset_postdata(); // 重置全局$post数据
}
?>
原文
http://wordpress-dulizhan.com/code/26.html