固定ページを並び替える時は、ページ属性に数値を指定すればよいが、この数値を固定ページ一覧でも確認できるように項目を追加する。
ソースコード
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
}