
如上图所示,默认情况下会显示本站所有注册用户。但有的时候因为各种原因只想显示满足指定条件的用户。
使用pre_user_query
在functions.php中插入如下代码:
<?php
add_action('pre_user_query', 'hide_59984458');
function hide_59984458($user_query)
{
if (!current_user_can('administrator')) {
global $wpdb;
$ids = array();
$results = $wpdb->get_results("SELECT user_id FROM `$wpdb->usermeta` WHERE `meta_key`='staff_department' AND `meta_value` LIKE '%itsolution%' ");
foreach ($results as $r) {
$ids[] = $r->user_id;
}
$ids = implode(',', $ids);
$user_query->query_where = str_replace(
'WHERE 1=1',
'WHERE 1=1 AND ID IN (' . $ids . ')',
$user_query->query_where);
}
}
?>
这段代码的作用是,wordpress在后台生成用户列表之前对用户列表进行一定的预处理。对数据库查询条件做一些调整。
代码提示:
上述代码中所示,每个用户都有一个属性staff_department(员工所属部门),就当做是用来保存员工的部门。想要查询符合itsolution(IT解决方案部)的用户。
评论区
发表新的留言
您可以留言提出您的疑问或建议。
您的留言得到回复时,会通过您填写的邮箱提醒您。