wp-query类别并且有标签

时间:2015-11-21 00:50:20

标签: php wordpress

我正在尝试使用wp_query查询wordpress中的帖子。我想通过使用has_tag将帖子放在一个类别和查询中。我试着用

$args = array (
                    'post_type'  => array( 'post' ),
                    'category_name' => 'footer',
                );
                // The Query
                $social = new WP_Query( $args );
                // The Loop
                if ( $social->have_posts()&&has_tag('social') ) {
                    while ( $social->have_posts() ) {
                        $social->the_post();
                        the_content();
                    }
                } rewind_posts();
                ?>

但这会加载所有帖子,并且不会只显示带有标记的帖子。

2 个答案:

答案 0 :(得分:2)

执行此操作的正确方法是限制WP_Query本身。

E.g。

$args = array(
    'post_type'  => array( 'post' ),
    'category_name' => 'footer',
    'tag' => 'social'
);

$social = new WP_Query( $args );

if ( $social->have_posts() ) {
    while ( $social->have_posts() ) {
        $social->the_post();
        the_content();
    }
}

wp_reset_postdata();

要使用has_tag,您需要先设置全局发布数据,例如setup_postdata($ social),这会产生大量的条件和循环开销,只是为了在你可以在查询本身内完成它时过滤你的结果。

答案 1 :(得分:1)

你需要在每个被调用的帖子中而不是在开始时检查(注意你可能需要传入has_tag的第二个arg,post对象。

if ( $social->have_posts() ) {
                while ( $social->have_posts() ) {
                    $social->the_post();
                    if( has_tag('social') { 
                        the_content();
                    }
                }
} rewind_posts();