カスタム投稿タイプの並び順について
カスタム投稿タイプ作成時にサポート(support
)にページ属性('page-attributes'
)が入っている時、投稿の編集画面のページ属性で並び順を設定できるようになります。
この記事では、page-attributesがsupportされたカスタム投稿タイプの並び順を管理画面の投稿一覧に表示し、並び順でソート可能にする方法を紹介します。
カスタム投稿タイプの並び順を管理画面の投稿一覧に表示する方法
下記のソースをfunction.phpに追加してください。
//page_attributeがついた投稿タイプの管理画面に並び順追加 function check_post_type_support_page_attr() { $all_post_types = get_post_types( array('show_ui' => true ), false ); if ( !isset( $_REQUEST['post_type'] ) ) { $edit_post_type = 'post'; } elseif ( in_array( $_REQUEST['post_type'], array_keys( $all_post_types ) ) ) { $edit_post_type = $_REQUEST['post_type']; } else { wp_die( __('Invalid post type') ); } if ( post_type_supports( $edit_post_type, 'page-attributes' ) ) { add_filter( 'manage_' . $edit_post_type . '_posts_columns', 'add_menu_order_column' ); add_action( 'admin_print_styles-edit.php', 'add_menu_order_column_styles' ); add_filter( 'manage_edit-' . $edit_post_type . '_sortable_columns', 'add_menu_order_sortable_column' ); } } add_action( 'load-edit.php' , 'check_post_type_support_page_attr' ); if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { add_action( 'admin_init', 'check_post_type_support_page_attr' ); } function add_menu_order_column( $posts_columns ) { $new_columns = array(); foreach ( $posts_columns as $column_name => $column_display_name ) { if ( $column_name == 'date' ) { $new_columns['order'] = __( 'Order' ); add_action( 'manage_pages_custom_column', 'display_menu_order_column', 10, 2 ); add_action( 'manage_posts_custom_column', 'display_menu_order_column', 10, 2 ); } $new_columns[$column_name] = $column_display_name; } return $new_columns; } function add_menu_order_sortable_column( $sortable_column ) { $sortable_column['order'] = 'menu_order'; return $sortable_column; } function display_menu_order_column( $column_name, $post_id ) { if ( $column_name == 'order' ) { $post_id = (int)$post_id; $post = get_post( $post_id ); echo $post->menu_order; } } function add_menu_order_column_styles() { ?> <style type="text/css" charset="utf-8"> .fixed .column-order { width: 7%; text-align: center; } </style> <?php }
上記のようにすればカスタム投稿タイプの並び順が管理画面の投稿一覧に表示され、並び順でのソートが可能になります。