如果您正在使用序列化数据作为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()