Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在worpdress的用户部分按自定义列排序_Php_Wordpress - Fatal编程技术网

Php 如何在worpdress的用户部分按自定义列排序

Php 如何在worpdress的用户部分按自定义列排序,php,wordpress,Php,Wordpress,我在word press的users部分中有两个自定义列“Store name”和“Date”。这两个列保存在数据库的users\u meta表中,如何在用户管理列表中按“Store name”和“Date”排序显示数据。到目前为止,我在users部分添加列标题并从user_meta获取它们的代码如下 Themes Function.php /* Adds a store name and date column to the user display dashboard. * * @param

我在word press的users部分中有两个自定义列“Store name”和“Date”。这两个列保存在数据库的users\u meta表中,如何在用户管理列表中按“Store name”和“Date”排序显示数据。到目前为止,我在users部分添加列标题并从user_meta获取它们的代码如下

Themes Function.php

/* Adds a store name and date column to the user display dashboard.
*
* @param    $columns    The array of columns that are displayed on the user dashboard
* @return           The updated array of columns now including zip codes.
*/
function theme_add_user_Store_name_column( $columns ) {

 $columns['Store_name'] = __( 'Store name', 'theme' );
 $columns['DATE'] = __( 'Date', 'theme' );
 return $columns;

 } // end theme_add_user_Store_name_column
 add_filter( 'manage_users_columns', 'theme_add_user_Store_name_column' );
 /**
* Populates the store name and date column with the specified user's store name.
*
* @param    $value      An empty string
* @param    $column_name    The name of the column to populate
* @param    $user_id    The ID of the user for which we're working with
* @return           The store name associated with the user
*/
function theme_show_user_Store_name_data( $value, $column_name, $user_id )   {

 if( 'Store_name' == $column_name ) {
     return get_user_meta( $user_id, 'Store_name', true );
 }

 if( 'DATE' == $column_name ) {
    return get_user_meta( $user_id, 'DATE', true );
 }// end if

 }  
 // end theme_show_user_Store_name_data
 add_action( 'manage_users_custom_column', 'theme_show_user_Store_name_data', 10, 3 );

使用以下代码根据自定义元字段对用户表进行排序,这用于单列,您可以修改它以添加第二个字段

// Register the column as sortable    
 function Store_name_column_register_sortable( $columns ) {
   $columns['Store_name'] = 'Store_name';
   return $columns;
  }

add_filter( 'manage_users_sortable_columns', 'Store_name_column_register_sortable' );
function Store_name_column_orderby( $vars ) {
if ( isset( $vars['orderby'] ) && 'Store_name' == $vars['orderby'] ) {
    $vars = array_merge( $vars, array(
    'meta_key' => 'Store_name',
    'orderby' => 'meta_value'
   ) );
 }
 return $vars;
}
add_filter( 'request', 'Store_name_column_orderby' );

要详细介绍PHPExpert在下面的回答,从Wordpress 4.4开始,您可以使用
用户\u列表\u表格\u查询\u参数
,而不是
请求

// Register the column as sortable    
function Store_name_column_register_sortable( $columns ) {
    $columns['Store_name'] = 'Store_name';
    return $columns;
}
add_filter( 'manage_users_sortable_columns', 'Store_name_column_register_sortable' );

function Store_name_column_orderby( $vars ) {
    if ( isset( $vars['orderby'] ) && 'Store_name' == $vars['orderby'] ) {
        $vars = array_merge( $vars, array(
            'meta_key' => 'Store_name',
            'orderby' => 'meta_value'
        ) );
    }
    return $vars;
}
add_filter( 'users_list_table_query_args', 'Store_name_column_orderby', 10, 1 );

请告诉我应该在theme functions.php还是在users.php中添加它?请在function中添加它。phpI应用了您的代码它工作正常但不完美我的商店名称像boca、knoxville、orlando,所以在这种情况下,默认情况下它应该像boca、knoxville、orlando一样按顺序添加,当我单击它来描述时,它应该颠倒顺序,目前它的排序顺序是诺克斯维尔、奥兰多、博卡,而在asc中它的排序顺序是博卡、奥兰多、诺克斯维尔。我发现了这个问题,实际上它的排序也是基于用户名和电子邮件的(默认情况下是wordpress),所以请告诉我如何忽略它们,因为我想基于当前自定义的元列进行排序。“门店名称”