WordPressの固定ページ一覧に順序の項目を追加する方法

WordPressの固定ページは、ページ属性の順序によってソートされるようになっているのは知られていますが、この項目が固定ページの一覧に表示されていたら、新規追加の際にいくつにすれば良いか分かりやすいですよね?

今回は、そんな固定ページの使い勝手を良くしてくれるコードを紹介します。

ちょっと長いですが、CODE 1 をテーマの functions.php に追加してもらえれば、

この通り。
固定ページに順序の項目が追加されます。項目名が青字になっていることからも分かるように、順序でソートできるようにもしていますし、page-attributes をサポートしたカスタム投稿タイプでは自動的に追加されるようにしましたので、汎用的に使えるのではないでしょうか。

是非、ためしてみてくださいね。

CODE 1

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
}

「WordPressの固定ページ一覧に順序の項目を追加する方法」への3件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です