WP_QUERY元比较必须包括所有数组值

时间:2012-12-03 作者:tyler

我允许用户使用带有复选框的表单查询帖子。我想通过复选框过滤帖子,但不是显示包含任何选定元值的所有帖子,而是显示包含所有选定值的帖子。这可能吗?下面是我目前使用的“IN”操作符,它只检查post是否包含数组中的任何单个值。

$the_query = new WP_Query(array(
            \'post_type\' => \'listing\',
            \'posts_per_page\' => -1,
            \'post_status\' => \'publish\', 
            \'category_name\' => \'private_rental\',
            \'orderby\' => \'rand\',
            \'meta_query\' => array(
                    \'key\' => \'row_amenities\',
                    \'value\' => $amenities,
                    \'compare\' => \'IN\'
                    )
        ));

1 个回复
最合适的回答,由SO网友:Matthew Boynes 整理而成

您可以有多个meta_query 参数具有相同的键,这将产生您正在寻求的结果。下面是一个示例:

$meta_query = array_map( create_function( \'$a\', \'return array("key" => "row_amenities", "value" => $a);\' ), $amenities );

$the_query = new WP_Query(array(
            \'post_type\' => \'listing\',
            \'posts_per_page\' => -1,
            \'post_status\' => \'publish\', 
            \'category_name\' => \'private_rental\',
            \'orderby\' => \'rand\',
            \'meta_query\' => $meta_query
        ));
如果$amenities 将有很多值(>10),您可能应该采取不同的方法,因为它将为每个meta\\u查询加入posmeta表。

结束