CMS構築を目的にPHPをベースとしたWordPress、CakePHPやPEARなどオープンソースを中心に解説しています

WordPress のカテゴリ管理画面でID情報のカラムを追加して、ソート可能にする方法です。

デフォルトのカテゴリ管理画面では、リストにカテゴリIDは表示されていません。
「編集」のパスからIDを抜き取る方法がありますが、スマートではありません。

またWordpressはカテゴリ一覧の表示順を指定できないことがしばしば課題になりますが、
IDでソートする方法もあり、その場合にやはりIDを表示する画面は必要になります。

フックを設定してカテゴリIDカラムを追加する

まずは、function.phpなどに以下のフック処理を追加して、IDカラムを表示させます。

function my_manage_edit_category_columns($columns){
	$index = 2;
	return array_merge(
        	array_slice($columns, 0, $index),
		array('id' => 'ID'),
        	array_slice($columns, $index)
    	);
}
add_filter("manage_edit-category_columns", "my_manage_edit_category_columns");

「$index」はカラムの表示位置です。
この例だと左から2番目に「ID」のカラムを表示します。
この時点ではヘッダラベルの表示のみで、データは表示されません。

カラム「ID」の値を表示するには以下の処理を追加します。

function my_manage_category_custom_column($string, $column_name, $id) {
	if ('id' == $column_name){
		echo $id;
	}
}
add_action('manage_category_custom_column', 'my_manage_category_custom_column', 10, 3);

さらに追加したカラムのヘッダラベル「ID」のクリックでソートを実現するためには以下の処理を追加します。

function my_manage_edit_category_sortable_columns($columns){
    $columns['id'] = 'ID';
    return $columns;
}
add_filter('manage_edit-category_sortable_columns', 'my_manage_edit_category_sortable_columns');

その他の管理画面について

上記の処理パターンを流用して、その他の管理画面でも同等の事が実装可能です。

以下のフックを利用することで、投稿一覧画面で投稿IDのカラムを表示させて、投稿IDでソートすることができます。

manage_edit-post_columns
manage_post_custom_column
manage_edit-post_sortable_columns

固定ページ管理画面では以下のとおりです。

manage_edit-page_columns
manage_page_custom_column
manage_edit-page_sortable_columns

カスタム投稿や、カスタムタクソノミーだと以下のようになります。
※{slug}内は任意のスラッグ

manage_edit-{slug}_columns
manage_{slug}_custom_column
manage_edit-{slug}_sortable_columns

ちなみに、カスタム投稿やカスタムタクソノミーについては若干処理に調整が必要で、
今のところソートが機能させることができません。
解決したら更新します。。。

このエントリーをはてなブックマークに追加

Reference

Comment

Comment Form

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

Monthly Archives

Search