我需要为我创建的自定义元数据向客户端wordpress添加可排序的列,所以我使用了pre_user_query
钩
add_action(\'pre_user_query\', \'user_column_orderby\');
function user_column_orderby($user_search) {
global $wpdb, $current_screen;
if ( \'users\' != $current_screen->id )
return;
$vars = $user_search->query_vars;
if(\'Kön\' == $vars[\'orderby\']) {
$user_search->query_from .= " INNER JOIN {$wpdb->usermeta} m1 ON {$wpdb->users}.ID=m1.user_id AND (m1.meta_key=\'gender\')";
$user_search->query_orderby = \' ORDER BY UPPER(m1.meta_value) \'. $vars[\'order\'];
} elseif (\'Ålder\' == $vars[\'orderby\']) {
$user_search->query_from .= " INNER JOIN {$wpdb->usermeta} m1 ON {$wpdb->users}.ID=m1.user_id AND (m1.meta_key=\'age\')";
$user_search->query_orderby = \' ORDER BY UPPER(m1.meta_value) \'. $vars[\'order\'];
} elseif (\'Distrikt\' == $vars[\'orderby\']) {
$user_search->query_from .= " INNER JOIN {$wpdb->usermeta} m1 ON {$wpdb->users}.ID=m1.user_id AND (m1.meta_key=\'district\')";
$user_search->query_orderby = \' ORDER BY UPPER(m1.meta_value) \'. $vars[\'order\'];
} elseif (\'Kategori\' == $vars[\'orderby\']) {
$user_search->query_from .= " INNER JOIN {$wpdb->usermeta} m1 ON {$wpdb->users}.ID=m1.user_id AND (m1.meta_key=\'category\')";
$user_search->query_orderby = \' ORDER BY UPPER(m1.meta_value) \'. $vars[\'order\'];
}
}
如果您在用户屏幕上,这很好用。但我还添加了一个导出到csv按钮,它调用export-csv.php
如下所示的文件:<?php
$location = $_SERVER[\'DOCUMENT_ROOT\'];
include ($location . \'/wp-load.php\');
if (current_user_can(\'manage_options\')) {
header("Content-type: application/force-download");
header(\'Content-Disposition: inline; filename="users\'.date(\'YmdHis\').\'.csv"\');
// WP_User_Query arguments
$args = array (
\'order\' => \'ASC\',
\'orderby\' => \'display_name\',
\'fields\' => \'all\',
);
// The User Query
$blogusers = get_users( \'orderby=nicename&order=ASC\' );
// Array of WP_User objects.
foreach ( $blogusers as $user ) {
//echo \'<span>\' . esc_html( $user->user_email ) . \'</span>\';
print_r($user);
}
}
现在,我的问题是.csv
文件有一个通知:注意:正在尝试获取中非对象的属性/wp内容/主题/神话/管理/用户\\u附加。php在线
指向直线:
if ( \'users\' != $current_screen->id )
在我的第一个代码中。这是因为我已经迷上了pre_user_query
钩子,我在我的文件中查询用户。有没有办法抑制此通知(无需wp-config.php
删除调试代码-这不是解决方案,只是掩盖了问题)?