如何在一个数组中使用两个META_COMPARE?

时间:2021-07-21 作者:robert0

我想用两个meta_compare 在数组中。

// get posts
$posts = get_posts(array(
    \'post_type\'      => \'post\',
    \'posts_per_page\' => 150,
    \'meta_query\'     => array(
        array(
            \'meta_key\'     => \'usp-custom-1\',
            \'meta_value\'   => array(\'question\',\'money\', \'health\',\'relationships\'),
            \'meta_compare\' => \'IN\',
            \'meta_compare\' => \'!=\',
        ),
    ),
    \'author\' =>  $_GET["id"],
    \'order\'  => \'DESC\'
));
但它不起作用。

我想要实现的是显示不等于这4个meta\\u值的帖子。

我知道我可能在某些方面犯了一个小错误。

任何帮助都将不胜感激。

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

好的,这条路有点长,但它会完成工作。

我们可以对和关系使用多个meta\\u值检查

// get posts
$posts = get_posts(array(
    \'post_type\'      => \'post\',
    \'posts_per_page\' => 150,
    \'meta_query\'     => array(
        \'relation\' => \'AND\',
        array(
            \'key\'     => \'usp-custom-1\',
            \'value\'   => \'question\',
            \'compare\' => \'!=\',
        ),
        array(
            \'key\'     => \'usp-custom-1\',
            \'value\'   => \'money\',
            \'compare\' => \'!=\',
        ),
        array(
            \'key\'     => \'usp-custom-1\',
            \'value\'   => \'health\',
            \'compare\' => \'!=\',
        ),
        array(
            \'key\'     => \'usp-custom-1\',
            \'value\'   => \'relationships\',
            \'compare\' => \'!=\',
        ),
    ),
    \'author\' =>  $_GET["id"],
    \'order\'  => \'DESC\'
));
您需要检查此查询的性能影响,因为它可能会占用大量资源。

我早就注意到了$_GET["id"], 如果您未经处理就传递了它,我建议清理/验证传递给您的每个值(您自己没有传递的值,如用户输入或url查询)。

根据属性名称,我假设它将是一个id,所以我们可以像这样清理它

\'author\' => filter_input(INPUT_GET, \'id\', FILTER_SANITIZE_NUMBER_INT)

SO网友:robert0

看起来没有使用meta_ 前缀,使用NOT IN 以及:

    // get posts
    $posts = get_posts(array(
    \'post_type\'         => \'post\',
    \'posts_per_page\'    => 150,
    \'meta_query\' => array(
        array(
            \'key\'     => \'usp-custom-1\',
            \'value\'   => array(  \'question\',\'money\', \'health\',\'relationships\'  ),
            \'compare\' => \'NOT IN\',
        ),
    ),
    \'author\' =>  $_GET["id"],
    \'order\'             => \'DESC\'
));
感谢@Buttered\\u Toast解决了这个问题。

相关推荐

如何在unction.php中更改图片url?

例如,我的图像url是https://aa.com/wp-content/uploads/2021/07/x-600x600.jpg我想把它改成https://images.s3.us-east-2.amazonaws.com/aa.com/wp-content/uploads/2021/07/x-600x600.jpg或https://images.s3.us-east-2.amazonaws.com/aa.com/wp-content/uploads/2021/07/x-600x600.jpg.web