Wordpress:按自定义帖子类型的列默认排序

Sea*_*ano 11 sorting wordpress

我有一个名为Contact的自定义帖子类型,其中包含姓名,姓氏,电话号码等自定义字段.

在管理部分,我们按时间顺序对它们进行了排序,但是我需要默认按姓氏排序.

我在这里阅读了所有其他解决方案,但没有一个能够工作,包括:

function set_post_order_in_admin( $wp_query ) {
global $pagenow;
  if ( is_admin() && 'edit.php' == $pagenow && !isset($_GET['orderby'])) {
    $wp_query->set( 'orderby', 'surname' );
    $wp_query->set( 'order', 'ASC' );
  }
}
add_filter('pre_get_posts', 'set_post_order_in_admin' );
Run Code Online (Sandbox Code Playgroud)

但无论我试图排序的哪个领域,都没有任何变化,除了切换ASC/DESC似乎改变为反向时间顺序.

我究竟做错了什么?

Gna*_*han 9

参考以下解决方案

function wpa84258_admin_posts_sort_last_name( $query ){
    global $pagenow;
    if( is_admin()
        && 'edit.php' == $pagenow
        && !isset( $_GET['orderby'] )
        && !isset( $_GET['post_type'] ) ){
            $query->set( 'meta_key', 'last_name' );
            $query->set( 'orderby', 'meta_value' );
            $query->set( 'order', 'ASC' );
    }
}
add_action( 'pre_get_posts', 'wpa84258_admin_posts_sort_last_name' );
Run Code Online (Sandbox Code Playgroud)

或参考此解决方案


小智 5

代替

 $wp_query->set( 'orderby', 'surname' );
 $wp_query->set( 'order', 'ASC' );
Run Code Online (Sandbox Code Playgroud)

$query->set( 'meta_key', 'surname' ); // name of your post meta key
$query->set( 'orderby',  'meta_value'); // meta_value since it is a string
Run Code Online (Sandbox Code Playgroud)

它可能有帮助