使用WP_Query编写查询

时间:2014-08-14 06:26:17

标签: mysql wordpress

我有2个类别cat-slug1和cat-slug2。其中,cat-slug1是cat-slug2的父母。我想写一个查询,其中我想要那些属于cat-slug1和cat-slug2的结果。

如果有一个帖子标记为cat-slug2但没有标记为cat-slug1,那么我不想在结果中记录此记录。

如何修改下面的代码,以便只返回属于cat-slug1和cat-slug2的结果

$paged2 = isset( $_GET['paged2'] ) ? (int) $_GET['paged2'] : 1;


$args2 = array('abc_category' => 'cat-slug1',   
               'abc_category' => 'cat-slug2',       
                      'post_type' => 'abc',
                'paged'     => $paged2,
                'posts_per_page' => 20,
                'orderby' => 'title',
                'order' => 'asc');  

            $query2 = new WP_Query( $args2 );

1 个答案:

答案 0 :(得分:1)

如何进行两次查询?

$posts_cat1 = array(...)
$posts_cat2 = array(...)

$posts_cat1_and_cat2 = [];
foreach($posts_cat1 as $post){
    if(in_array($post, $array_cat2)) array_push($posts_cat1_and_cat2, $post);
}

修改

请注意,如果您希望WP_Query仅提取帖子,则可以将其替换为get_posts。这是一个小小的更新(未经测试):

function get_posts_by_cat($cat){
    $args = array('category'=>$cat);
    return get_posts($args);
}

$posts_cat1 = get_posts_by_cat('cat-slug1');
$posts_cat2 = get_posts_by_cat('cat-slug2');

$posts_cat1_and_cat2 = [];
foreach($posts_cat1 as $post){
    if(in_array($post, $array_cat2)) array_push($posts_cat1_and_cat2, $post);
}

更多参数:http://codex.wordpress.org/Template_Tags/get_posts