WP_QUERY显示与帖子类别相同的帖子

时间:2016-09-21 作者:ERDFX

在我的帖子页面上,我试图显示与原始帖子类别相同的其他帖子列表。到目前为止,我得到了这个,但这个似乎不起作用:

<?php

    $args = array(
        \'post_type\' => \'article\',
        \'posts_per_page\' => 5,
        \'post__not_in\' => array( get_the_ID() ),
        \'category\'     => array( get_the_category() ),
        \'meta_query\' => array(
                    array(
                    \'key\' => \'recommended_article\',
                    \'value\' => \'1\',
                    \'compare\' => \'==\'
                        )
                    )
    );
    $query = new WP_Query( $args );

?>

    <?php if( $query->have_posts() ) : while( $query->have_posts() ) : $query->the_post(); ?>

<a class="popup-article-picture" href="<?php the_permalink(); ?>" style="background-image: url(\'<?php the_post_thumbnail_url(); ?>\');"></a>
<a class="popup-article-title" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>

    <?php endwhile; endif; wp_reset_postdata(); ?>

2 个回复
最合适的回答,由SO网友:ERDFX 整理而成

我找到了一个答案:

<?php

    $cats = get_the_category();
    $args = array(
        \'post_type\' => \'article\',
        \'post__not_in\' => array( get_the_ID() ),
        \'posts_per_page\' => 5,
        \'cat\'     => $cats[0]->term_id,
        \'meta_query\' => array(
                    array(
                    \'key\' => \'recommended_article\',
                    \'value\' => \'1\',
                    \'compare\' => \'==\'
                        )
                    )
    );
    $query = new WP_Query( $args );

?>  

<?php if( $query->have_posts() ) : while( $query->have_posts() ) : $query->the_post(); ?>   

<!--HTML-->

<?php endwhile; endif; wp_reset_postdata(); ?>

SO网友:Anwer AR

您正在尝试查询名为article. 您是否对帖子类型使用默认的WordPress帖子类别article? 或者已经为该帖子类型注册了自定义分类法?我假设您正在使用默认的WordPress类别CPT. 所以第一步是从单个页面获取当前类别。以下函数将从循环外部返回附加到帖子的类别。

get_the_category();
它将返回一个术语对象数组。您必须从这个数组中获取slug才能传入查询。假设我们只为一篇文章分配了一个类别。

$category_obj = get_the_category();
$category = $category_obj[0]->slug;
现在,您可以在相关帖子查询中使用它。

$args = array(
        \'post_type\' => \'article\',
        \'posts_per_page\' => 5,
        \'category\'     => $category,
        \'meta_query\' => array(
                    array(
                    \'key\' => \'recommended_article\',
                    \'value\' => \'1\',
                    \'compare\' => \'==\'
                        )
                    )
    );
    $query = new WP_Query( $args );
如果您正在对post类型使用自定义分类法,请告知我们,以便我们可以帮助您了解自定义分类法。