Php wp查询类别和has标记

Php wp查询类别和has标记,php,wordpress,Php,Wordpress,我正在尝试使用wp_查询查询wordpress中的帖子。我想把文章放在一个类别中,并使用has_标签进行查询。我试着用 $args = array ( 'post_type' => array( 'post' ), 'category_name' => 'footer', ); // The Query $s

我正在尝试使用wp_查询查询wordpress中的帖子。我想把文章放在一个类别中,并使用has_标签进行查询。我试着用

$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();
                ?>

但这会加载所有帖子,而不仅仅是显示带有标记的帖子。

您需要在调用的每个帖子中进行检查,而不是在开始时进行检查(注意,您可能需要传入has_标记的第二个参数,post对象)

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

正确的方法是限制WP_查询本身

例如


要使用has_标记,您需要首先设置全局帖子数据,例如setup_postdata($social),这将在条件和循环方面产生大量开销,只是为了在查询本身中过滤结果。

您可能已经看过了,但如果没有,它可能会有所帮助。我认为您也可以在查询中使用&&hastag来固定标记。您还可以在需要多个标记时使用
税务查询
分类法控制在本例中,我认为您也可以在查询中使用&&hastag来锁定标记。使用WP_query,您可以使用以下标记参数:这是更好的响应,David的响应效率更低。我认为您还可以在查询中使用&&hastag来锁定标记。
$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();