我有一个meta_key
在桌子里面usermeta
呼叫“sms\\U订户”。这个meta_value
因为这是他们的电话号码。我想echo
具有该字段的所有用户的列表;换句话说,是每个用户的姓名、电话号码和数量的列表。
页面输出可能如下所示:
SMS Subscribers (3)
1 ben blue+15553335555
2 bob bananas+44555778888
3 jerry johnson+1333445555
我尝试了许多不同的查询,并成功地echo
用户的display_name
, 以及meta_value
具有meta_key
等于sms_subscriber
, 但不在同一查询中。我在Sequel Pro中还有一个查询,它输出sum
.
以下是:
显示用户显示名称的正确列表:
$user_query = new WP_User_Query( array( \'meta_key\' => \'sms_subscriber\' ) );
$users = $user_query->get_results();
if (!empty($users)) {
echo \'<ul>\';
foreach ($users as $user){
echo \' <li>\' . $user->display_name . $user->meta_value . \'</li>\';
}
echo \'</ul>\';
}
显示正确的电话号码列表:
$phones = $wpdb->get_col("SELECT meta_value FROM $wpdb->usermeta WHERE meta_key = \'sms_subscriber\'" );
$phones = array_keys(array_flip($phones));
// var_dump( $phones );
foreach ($phones as $phone) {
echo $phone . \'<br>\';
}
在Sequel Pro的查询窗口中,显示
sum
:
select sum(um.meta_key = \'sms_subscriber\'),
from wp_usermeta um
join wp_users u on u.id = um.user_id
where um.meta_key = \'sms_subscriber\'
你能帮我把这三个查询作为一个查询,这样我就可以创建列表了吗?
最合适的回答,由SO网友:Sally CJ 整理而成
我想echo
具有该字段的所有用户的列表;换句话说,是每个用户的姓名、电话号码和数量的列表。
请尝试以下内容,它基于您的第一段代码:
(这就是你所需要的;不需要$wpdb->get_col()
代码段)
$user_query = new WP_User_Query( array( \'meta_key\' => \'sms_subscriber\' ) );
$users = $user_query->get_results();
if (!empty($users)) {
echo \'<h3>SMS Subscribers (\' . $user_query->get_total() . \')</h3>\';
echo \'<ul>\';
foreach ($users as $user){
// this one uses the magic __get() method in WP_User, i.e. $user-><meta key>
// echo \' <li>\' . $user->display_name . " $user->sms_subscriber" . \'</li>\';
$sms_subscriber = get_user_meta( $user->ID, \'sms_subscriber\', true );
echo \' <li>\' . $user->display_name . " $sms_subscriber" . \'</li>\';
}
echo \'</ul>\';
}
<注意事项:您可以使用
get_user_meta()
检索用户元数据的值。
或者,WP_User
有魔力__get()
方法,您可以使用该方法获取元值,而无需使用上述函数,但仅获取单个元值(无论该值是字符串/文本、数字、数组等)。例如,您可以使用$user->sms_subscriber
就像你在我上面注释掉的代码中看到的那样。
获取;“数量”;或sum
正如您所说的,这是与您的查询参数匹配的用户总数,您可以使用WP_User_Query::get_total()
.
如果您只想计算$users
(即查询结果的第一页-可以使用number
参数),然后使用count( $users )
代替$user_query->get_total()
.