Php 如何在worpdress的用户部分按自定义列排序
我在word press的users部分中有两个自定义列“Store name”和“Date”。这两个列保存在数据库的users\u meta表中,如何在用户管理列表中按“Store name”和“Date”排序显示数据。到目前为止,我在users部分添加列标题并从user_meta获取它们的代码如下 Themes Function.phpPhp 如何在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
/* 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),所以请告诉我如何忽略它们,因为我想基于当前自定义的元列进行排序。“门店名称”