カスタム投稿タイプ(下記のコード例)を追加すると、新しいカスタム投稿タイプの管理ページで、投稿はデフォルトでID順にソートされます。代わりにデフォルトのソート順を投稿のタイトルに設定する方法はありますか(この新しいカスタム投稿タイプのみ)。
$labels = array(
'name' => 'States',
'singular_name' => 'State',
'add_new' => __( 'Add State' ),
'add_new_item' => __( 'Add New State' ),
'edit_item' => __( 'Edit State' ),
'new_item' => __( 'New State'),
'view' => __( 'View State'),
'view_item' => __( 'View State'),
'search_items' => __( 'Search States'),
'not_found' => __( 'No States found' ),
'not_found_in_trash' => __( 'No States found in trash' ),
'parent' => __( 'Parent State')
);
$args = array('public' => true,
'show_ui' => true,
'show_in_nav_menus' => true,
'show_in_menu' => true,
'labels' => $labels,
'supports' => array( 'title','editor')
);
register_post_type( 'states', $args );
pre_get_posts
を使って注文を強制することができます。
function wpa_order_states( $query ){
if( !is_admin() )
return;
$screen = get_current_screen();
if( 'edit' == $screen->base
&& 'states' == $screen->post_type
&& !isset( $_GET['orderby'] ) ){
$query->set( 'orderby', 'title' );
$query->set( 'order', 'ASC' );
}
}
add_action( 'pre_get_posts', 'wpa_order_states' );
私はこの答えがより良かったと思いました ここ (質問に合うように変更されました):
function se91124_order_post_type($query) {
if($query->is_admin) {
if ($query->get('post_type') == 'States')
{
$query->set('orderby', 'title');
$query->set('order', 'ASC');
}
}
return $query;
}
add_filter('pre_get_posts', 'se91124_order_post_type');
se91124_order_post_type は任意の関数名に変更できます。 States はpost_typeの名前またはラベル、orderby title は任意の名前にすることができます(例:menu_order)。そして、明らかに _ asc _ はDESCのために変更することができます。
URLからのオリジナル:
function posts_for_current_author($query) {
if($query->is_admin) {
if ($query->get('post_type') == 'portfolio')
{
$query->set('orderby', 'menu_order');
$query->set('order', 'ASC');
}
}
return $query;
}
add_filter('pre_get_posts', 'posts_for_current_author');