我想添加自定义过滤器,其中包含来自users表的自定义列,而不是元键。我发现此函数要通过元键进行过滤:
add_filter(\'pre_get_users\', \'filter_users_by_job_role_section\');
function filter_users_by_job_role_section($query)
{
global $pagenow;
if (is_admin() && \'users.php\' == $pagenow) {
// figure out which button was clicked. The $which in filter_by_job_role()
$top = $_GET[\'job_role_top\'];
$bottom = $_GET[\'job_role_bottom\'];
if (!empty($top) OR !empty($bottom))
{
$section = !empty($top) ? $top : $bottom;
// change the meta query based on which option was chosen
$meta_query = array (array (
\'key\' => \'membership_user_role\',
\'value\' => $section,
\'compare\' => \'LIKE\'
));
$query->set(\'meta_query\', $meta_query);
}
}
}
我想将查询更改为使用comumn表“user\\u status”。请告诉我怎么做。
SO网友:Tom J Nowell
This isn\'t possible with custom table columns, 而且,您应该避免对WP核心表进行自定义修改。相反,将此数据存储在用户meta中,而不是自定义表列中。
下次更新WordPress时,如果数据库架构将发生更改,WP将调整表以匹配,从而销毁自定义列及其包含的所有数据(否则更新将失败)。
您尝试使用的API用于这些用户元值,您可以像post meta一样调整用户元:
add_user_meta
update_user_meta
get_user_meta
delete_user_meta
您可以通过使用这些来简化代码,它将允许您消除调整表和保存/获取信息所需的原始SQL,并允许您按预期使用WP API。
记住,永远不要修改WP Core来更改WP,这包括表列