使WordPress在USERS屏幕上显示wp_USERS表时,将默认用户元与另一个表中的列联接

时间:2018-03-16 作者:Tonyscofield Kimari

我正在创建一个插件,将自定义的可排序列(声誉分数)添加到admin page>users中显示的users表中,问题是该列的数据应该从MySQL表wp\\U user\\U Reputation中提取(userid,user_reputation_score) [为我们自己的目的而创建]。

我的评估是,我需要在查询中显示该列,以便为其添加排序功能。如何使make WordPress以wp\\u user\\u信誉加入wp\\u users表。

我感谢你的帮助。

2 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

为了避免仅仅为了排序而进行第二次查询,您可以使用pre_user_query 挂钩以支持自定义orderby 价值

此代码仅通过设置即可在单个查询中按信誉对用户进行排序orderbyreputation.

function wpse_296999_pre_user_query( $user_query ) {
    global $wpdb;

    $order = $user_query->query_vars[\'order\'];
    $orderby = $user_query->query_vars[\'orderby\'];

    // If orderby is \'reputation\'.
    if ( \'reputation\' === $orderby ) {
        // Join reputation table.
        $user_search->query_from .= " INNER JOIN {$wpdb->prefix}user_reputation AS reputation ON {$wpdb->users}.ID = reputation.userid"; 
        // And order by it.
        $user_search->query_orderby = " ORDER BY reputation.user_reputation_score $order";
    } 
}
add_action(\'pre_user_query\',\'wpse_27518_pre_user_query\');
只需确保在这一行:

if ( \'reputation\' === $orderby ) {
\'reputation\' 是可排序列的实际名称。

SO网友:Florian

您必须构造一个自定义MySQL查询来检索已排序的userid 从您的wp_user_reputation 桌子然后您可以使用排序的userids来构建get_users() 使用查询\'include\' => $your_retrieved_ids\'order\' => \'include\'.

结束

相关推荐

当返回值为空时,Apply_Filters为什么要返回非空字符串?

因为这个把我的键盘弄坏了。进行了正确的安装,将数据库上载到新的MySQL,并一直在正确使用子主题。但有件事困扰着我,我想不出来。在我的新安装上(ver2.whowhatwhy.com) 我故意将一些小部件留空。我想,当阅读default-widgets.php wp中的文件包括在该小部件上不会显示标题元素。相反,显示标题小部件是因为,出于某种原因,传递的值apply_filters 是一个空格,而不是空白值$instance[\'title\'] 为空。$title = apply_filters( \'