WordPress纯代码实现多分类筛选
在WordPress中,如果你想通过纯代码实现多分类筛选,即筛选出同时属于多个特定分类的文章,你可以使用WP_Query
类来构造一个自定义查询。以下是一个简单的示例,展示了如何实现这一功能:
把以下代码放到想显示的位置。
方法一:WordPress纯代码实现多分类筛选
<?php //方法一:WordPress纯代码实现多分类筛选
// 定义一个包含多个分类ID的数组
$category_ids = array(3, 7, 12); // 假设3, 7, 12是你想要筛选的分类ID
// 创建一个新的WP_Query对象来执行自定义查询
$query = new WP_Query(array(
'category__in' => $category_ids, // 使用category__in参数来指定分类ID数组
'posts_per_page' => -1 // 获取所有符合条件的文章,如果你想限制数量,可以将其设置为一个正整数
));
// 检查是否有文章被查询出来
if ($query->have_posts()) :
// 开始循环输出文章
while ($query->have_posts()) : $query->the_post();
// 输出文章标题和链接
echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
endwhile;
// 重置文章数据
wp_reset_postdata();
else :
// 如果没有文章被查询出来,输出提示信息
echo '<p>没有找到符合条件的文章。</p>';
endif;
?>
这段代码会查询出同时属于分类ID为3、7和12的文章,并将它们的标题和链接以列表的形式输出。你可以根据需要修改$category_ids
数组中的分类ID,以及调整posts_per_page
参数来控制输出的文章数量。
方法二:WordPress纯代码实现多分类筛选 (在方法一的基础改进)
当然,以下是一个更完整的示例,展示了如何在WordPress中使用WP_Query
类来实现多分类筛选,并将结果以HTML列表的形式输出:
<?php 方法二:WordPress纯代码实现多分类筛选 (在方法一的基础改进)
// 定义一个包含多个分类ID的数组
$category_ids = array(3, 7, 12); // 假设3, 7, 12是你想要筛选的分类ID
// 创建一个新的WP_Query对象来执行自定义查询
$query = new WP_Query(array(
'category__in' => $category_ids, // 使用category__in参数来指定分类ID数组
'posts_per_page' => -1, // 获取所有符合条件的文章,如果你想限制数量,可以将其设置为一个正整数
'orderby' => 'date', // 按照文章发布日期排序
'order' => 'DESC' // 降序排列
));
// 检查是否有文章被查询出来
if ($query->have_posts()) : ?>
<ul>
<?php // 开始循环输出文章
while ($query->have_posts()) : $query->the_post(); ?>
<li>
<a href="<?php echo get_permalink(); ?>"><?php echo get_the_title(); ?></a>
<!-- 你可以在这里添加更多的文章信息,比如发布日期、作者等 -->
</li>
<?php endwhile; ?>
</ul>
<?php // 重置文章数据
wp_reset_postdata();
else : ?>
<p>没有找到符合条件的文章。</p>
<?php endif; ?>
这段代码首先定义了一个包含多个分类ID的数组$category_ids
,然后使用这个数组作为WP_Query
类的category__in
参数的值来执行一个自定义查询。查询结果会按照文章发布日期降序排列,并且没有限制返回的文章数量(posts_per_page
设置为-1
)。
如果查询到了文章,代码会以HTML列表的形式输出每篇文章的标题和链接。如果没有查询到文章,则会输出一条提示信息。最后,使用wp_reset_postdata()
函数重置文章数据,以避免对后续查询或页面渲染产生影响。
方法三:WordPress纯代码实现多分类筛选 (在方法二的基础改进,修改成同时满足多分类)
要修改代码以同时满足多个分类的条件,意味着你想要获取那些同时被分配到所有指定分类中的文章。WordPress 的 WP_Query
类中的 category__in
参数实际上是获取属于任一指定分类的文章,而不是同时属于所有指定分类的文章。
为了获取同时属于多个分类的文章,你需要使用 category__and
参数(在旧版本的 WordPress 中可能需要使用 tax_query
)。以下是一个使用 category__and
参数的示例:
<?php //方法三:WordPress纯代码实现多分类筛选 (在方法二的基础改进,修改成同时满足多分类)
// 定义一个包含多个分类ID的数组
$category_ids = array(3, 7, 12); // 假设3, 7, 12是你想要筛选的分类ID
// 创建一个新的WP_Query对象来执行自定义查询
$query = new WP_Query(array(
'category__and' => $category_ids, // 使用category__and参数来指定必须同时满足的分类ID数组
'posts_per_page' => -1, // 获取所有符合条件的文章
'orderby' => 'date', // 按照文章发布日期排序
'order' => 'DESC' // 降序排列
));
// 检查是否有文章被查询出来
if ($query->have_posts()) : ?>
<ul>
<?php // 开始循环输出文章
while ($query->have_posts()) : $query->the_post(); ?>
<li>
<a href="<?php echo get_permalink(); ?>"><?php echo get_the_title(); ?></a>
<!-- 你可以在这里添加更多的文章信息,比如发布日期、作者等 -->
</li>
<?php endwhile; ?>
</ul>
<?php // 重置文章数据
wp_reset_postdata();
else : ?>
<p>没有找到同时属于所有指定分类的文章。</p>
<?php endif; ?>
这段代码将查询出同时属于分类ID为3、7和12的文章,并将它们的标题和链接以列表的形式输出。如果没有找到符合条件的文章,则会输出一条提示信息。