在用户部分排序自定义列在wordpress中工作不正常

时间:2016-02-08 09:24:48

标签: php wordpress sorting

我正在使用此代码对admin / users中的用户列表进行排序。它不能很好地工作,因为它仍然是基于用户名和电子邮件排序(默认worpress排序列)我如何只根据我的自定义用户元键及其值“store_name”而不是默认单词对我的用户列表进行排序按列。

代码到现在

// 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');

2 个答案:

答案 0 :(得分:0)

添加订单=>' asc'或者' desc'

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'] ) && 'company' == $vars['orderby'] ) {
        $vars = array_merge( $vars, array(
            'meta_key' => 'company',
            'orderby' => 'meta_value',
            'order'     => 'asc'
        ) );
    }
    return $vars;
}
add_filter( 'request', 'Store_name_column_orderby' );

答案 1 :(得分:0)

所以最后我在长时间搜索后找到了答案。 我们必须告诉WordPress我们想要排序的方式。在WordPress 4.2中,按数值排序在WP_User_Query中变得更加容易。 Here is helpful URL 新法典:

/**
* Add sortable columns.
*
* @since  1.0.0
* @return void
*/
function prefix_sortable_columns( $columns ) {
$columns['Store_name'] = 'Store_name';
$columns['DATE'] = 'DATE';
return $columns;

}
add_filter( 'manage_users_sortable_columns', 'prefix_sortable_columns' );

/**
* Sort by expire date. Meta key is called 'DATE'.
*
* @since  1.0.0
* @return void
*/
function prefix_sort_by_expiration_date( $query ) {
if ( 'Store_name' == $query->get( 'orderby' ) ) {
    $query->set( 'orderby', 'meta_value' );
    $query->set( 'meta_key', 'Store_name' );
}
if ( 'DATE' == $query->get( 'orderby' ) ) {
    $query->set( 'orderby', 'meta_value_num' );
    $query->set( 'meta_key', 'DATE' );
}
}
add_action( 'pre_get_users', 'prefix_sort_by_expiration_date' );