我可以计算与多值密钥中的值匹配的用户数吗?

时间:2016-03-01 作者:Fraser

我试图在自定义字段中找到具有特定值的用户数。问题是此自定义字段允许多个值。当meta\\u键只允许一个值时,这段代码工作得很好,但如何让它与多个值一起工作?

$args = array(\'meta_key\' => \'fruits_user_like\', \'meta_value\' =>\'apple\');
$users = get_users($args);
$number_of_users = count($users);

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

如果您正在使用序列化数据作为meta\\u值,这很糟糕,正如Pieter所建议的那样,最好不要这样做。

然而,如果没有办法解决序列化问题,那么我想知道meta_query 使用compare 的值LIKE 可能会有帮助。。。

示例:

//psuedo serialized data... (e.g. value of meta_key = fruits_user_like)
//a:4:{i:0;s:5:"apple";i:1;s:6:"orange";i:2;s:6:"banana";i:3;s:31:"serialized_data_sucks_sometimes";}

$users = get_users(   
    array(   
        \'meta_query\' => array(  
            array(  
                \'key\'   => \'fruits_user_like\',
                \'value\' => array(
                    \'apple\', 
                    \'orange\', 
                    \'banana\', 
                    \'serialized_data_sucks_sometimes\'
                ),
                \'compare\' => \'LIKE\'
            )
        )    
    )    
);
。。。我想知道。

上述方法不适用于compare 的值LIKE, 我们需要使用REGEXP 并传递正则表达式作为值。

请尝试以下操作:

$args = array(   
    \'meta_query\' => array(
        array(    
            \'key\'   => \'fruits_user_like\',
            \'value\' => \'(apple|orange|banana)\',
            \'compare\' => \'REGEXP\'
        )
    ),
    \'count_total\' => true
);

$users = new WP_User_Query($args);

print_r( $users->get_total() );
切换到使用到WP_User_Query, 在这种情况下更合适,因为我们可以通过count_total 参数,然后调用该方法WP_User_Query::get_total()

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在