我正在尝试为WordPress管理中的users.php
中的化身设置自定义过滤器。我检查了用户是否有图片或上载了自己的图片。我将此信息写到用户的单独列中,并将其作为meta_key = 'avatar'
并以值Avatar
或Gravatar
记录到数据库中。
我尝试按照here的说明来实现它,但是没有成功。
这是我的功能,用于在用户列表顶部显示带有按钮的过滤器输入。
function filter_by_avatar($which)
{
// template for filtering
$st = '<select name="avatar_%s" style="float:none;margin-left:10px;">
<option value="">%s</option>%s</select>';
// generate options
$options = '<option value="avatar">Avatar</option>
<option value="gravatar">Gravatar</option>';
// combine template and options
$select = sprintf( $st, $which, __( 'Type of avatar...' ), $options );
// output <select> and submit button
echo $select;
submit_button(__( 'Filter' ), null, $which, false);
}
add_action('restrict_manage_users', 'filter_by_avatar');
这是filter
函数:
function filter_users_by_avatar_section($query)
{
global $pagenow;
if (is_admin() && 'users.php' == $pagenow) {
// put the filtering code in here
//$top = $_GET['avatar_top'];
$top = $_GET['avatar_avatar'];
//$bottom = $_GET['avatar_bottom'];
$bottom = $_GET['avatar_gravatar'];
if (!empty($top) OR !empty($bottom))
{
$section = !empty($top) ? $top : $bottom;
$meta_query = array (array (
'key' => 'avatar',
'value' => $section,
'compare' => 'LIKE'
));
$query->set('meta_key', 'avatar');
$query->set('meta_query', $meta_query);
}
}
}
当我从Gravatar的下拉头像中选择并单击“过滤器”时,结果只会刷新页面。