纯代码实现wordpress多分类筛选

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的文章,‌并将它们的标题和链接以列表的形式输出。‌如果没有找到符合条件的文章,‌则会输出一条提示信息。‌