如何显示与主类别相关的条目

时间:2019-12-15 作者:Plantas y remedios Caseros

我有一个具有以下类别和子类别的条目

-Crops
---fruit
----papaya (Main)
问题是,当我显示相关文章时,它会显示该类别的所有条目(crops) 而不是您选择为主类别的子类别(papaya)

这是我的代码:

$terms = get_the_terms( get_the_ID(), \'post_tag\');

$args = array (
\'category__not_in\'           => $tags,
    \'post__not_in\' => array(get_the_ID()),
    \'posts_per_page\'         => \'10\',
    \'ignore_sticky_posts\' => 1,
    \'meta_key\' => \'_thumbnail_id\',
    );


$query = new WP_Query($args);

if ($query->have_posts()) { ?>
    <section class="entry-related">
        <h3>Articulos relacionados</h3>
        <div class="flex flex-fluid">
            <?php
            while ($query->have_posts()) {
                $query->the_post();
                get_template_part(\'template-parts/loops/loop\', \'related\');
            }
            ?>
        </div>
    </section>

    <?php
}
wp_reset_postdata();
如何仅显示我选择为主要类别的子类别中的条目?

谢谢你的帮助

1 个回复
SO网友:Raba

该代码有几个问题

选择错误的术语首先,在$terms 变量类别的分类名称为category. 这条线应该是这样的。

$categories = get_the_terms( get_the_ID(), \'category\');
为了便于表达,我更改了$terms 变量至$categories.

您使用的类别查询参数错误category__not_in, 告诉查询NOT 搜索具有这些职业的帖子。这不仅仅是从crops, 它会返回所有没有当前类别的帖子。

为了告诉查询您想要某个类别或一组类别中的帖子,您应该使用category__in

您可以查看有关WP_Query here

中的category\\uu的值错误category__in 查询的参数将字符串或类别ID(字符串)数组作为值。存储在中的项目$categories 数组是的实例WP_Term.

为了传递正确的值,应该从WP_Term. 我们可以得到WP_Term 通过访问term_id 所有物

\'category__in\'           => array_map(function($cat){ return $cat->term_id; }, $categories)
array_map 对数组中的每个项应用回调函数后,返回数组中的每个项。在本例中,我们将从$categories 大堆

最终结果是您的查询应该是这样的

$categories = get_the_terms( get_the_ID(), \'category\');

$args = array (
    \'category__in\'                  => array_map(function($cat){ return $cat->term_id; }, $categories),
    \'post__not_in\'                  => array(get_the_ID()),
    \'posts_per_page\'                => \'10\',
    \'ignore_sticky_posts\'           => 1,
    \'meta_key\'                      => \'_thumbnail_id\',
);

$query = new WP_Query($args);