WordPressの管理画面では、投稿一覧や固定ページ一覧に表示される列をカスタマイズできます。今回は、「View数」、「スラッグ」、「ID」、「順序」の4つの列を表示し、それらの列でソートが可能になるようにカスタマイズしていきます。
それぞれのカスタマイズ方法を以下に示します。
View数列の追加とソート
functions.php に以下のコードを追加します。
//記事のView数メタデータを作成・更新する
function setPostViews() {
$post_id = get_the_ID();
$custom_key = 'post_views_count';
$post_views_count = get_post_meta($post_id, $custom_key, true); //現在のビュー数を取得
//すでにメタデータがあるかどうかで処理を分ける
if ($post_views_count === '') {
delete_post_meta($post_id, $custom_key);
add_post_meta($post_id, $custom_key, '0');
} else {
$post_views_count++;
update_post_meta($post_id, $custom_key, $post_views_count);
}
}
add_action('wp_head', 'setPostViews');
//投稿一覧と固定ページ一覧に「View数」列を追加
function add_posts_columns_post_views_count($columns) {
$columns['post_views_count'] = 'view数';
echo '<style>.fixed .column-post_views_count {width:80px;}</style>';
return $columns;
}
add_filter('manage_posts_columns', 'add_posts_columns_post_views_count');
add_filter('manage_pages_columns', 'add_posts_columns_post_views_count');
//記事のView数を表示する
function custom_posts_columns_post_views_count($column_name, $post_id) {
if ('post_views_count' == $column_name) {
$post_id = $post_id ? $post_id : get_the_ID();
$custom_key = 'post_views_count';
$post_views_count = get_post_meta($post_id, $custom_key, true);
if ($post_views_count === '') {
//まだメタデータが存在していなければ
delete_post_meta($post_id, $custom_key);
add_post_meta($post_id, $custom_key, '0');
$post_views_count = 0;
}
echo $post_views_count;
}
}
add_action('manage_posts_custom_column', 'custom_posts_columns_post_views_count', 10, 2);
add_action('manage_pages_custom_column', 'custom_posts_columns_post_views_count', 10, 2);
//ソート可能にする
function sort_posts_columns_post_views_count($columns) {
$columns['post_views_count'] = 'post_views_count';
return $columns;
}
add_filter('manage_edit-post_sortable_columns', 'sort_posts_columns_post_views_count');
add_filter('manage_edit-page_sortable_columns', 'sort_posts_columns_post_views_count');
スラッグ列の追加とソート
functions.php に以下のコードを追加します。
//記事のView数メタデータを作成・更新する
function setPostViews() {
$post_id = get_the_ID();
$custom_key = 'post_views_count';
$post_views_count = get_post_meta($post_id, $custom_key, true); //現在のビュー数を取得
//すでにメタデータがあるかどうかで処理を分ける
if ($post_views_count === '') {
delete_post_meta($post_id, $custom_key);
add_post_meta($post_id, $custom_key, '0');
} else {
$post_views_count++;
update_post_meta($post_id, $custom_key, $post_views_count);
}
}
add_action('wp_head', 'setPostViews');
//投稿一覧と固定ページ一覧に「View数」列を追加
function add_posts_columns_post_views_count($columns) {
$columns['post_views_count'] = 'view数';
echo '';
return $columns;
}
add_filter('manage_posts_columns', 'add_posts_columns_post_views_count');
add_filter('manage_pages_columns', 'add_posts_columns_post_views_count');
//記事のView数を表示する
function custom_posts_columns_post_views_count($column_name, $post_id) {
if ('post_views_count' == $column_name) {
$post_id = $post_id ? $post_id : get_the_ID();
$custom_key = 'post_views_count';
$post_views_count = get_post_meta($post_id, $custom_key, true);
if ($post_views_count === '') {
//まだメタデータが存在していなければ
delete_post_meta($post_id, $custom_key);
add_post_meta($post_id, $custom_key, '0');
$post_views_count = 0;
}
echo $post_views_count;
}
}
add_action('manage_posts_custom_column', 'custom_posts_columns_post_views_count', 10, 2);
add_action('manage_pages_custom_column', 'custom_posts_columns_post_views_count', 10, 2);
//ソート可能にする
function sort_posts_columns_post_views_count($columns) {
$columns['post_views_count'] = 'post_views_count';
return $columns;
}
add_filter('manage_edit-post_sortable_columns', 'sort_posts_columns_post_views_count');
add_filter('manage_edit-page_sortable_columns', 'sort_posts_columns_post_views_count');
スラッグ列の追加とソート
functions.php に以下のコードを追加します。
/* 投稿一覧と固定ページ一覧にスラッグ列を追加 */
function add_post_page_column_title($columns) {
$columns['slug'] = 'スラッグ';
echo '';
return $columns;
}
add_filter('manage_posts_columns', 'add_post_page_column_title');
add_filter('manage_pages_columns', 'add_post_page_column_title');
function add_post_page_column($column_name, $post_id) {
if ($column_name == 'slug') {
$post = get_post($post_id);
$slug = $post->post_name;
echo esc_attr($slug);
}
}
add_action('manage_posts_custom_column', 'add_post_page_column', 10, 2);
add_action('manage_pages_custom_column', 'add_post_page_column', 10, 2);
// スラッグ列のソート
function add_slug_sortable_column( $columns ) {
$columns['slug'] = 'slug';
return $columns;
}
add_filter('manage_edit-post_sortable_columns', 'add_slug_sortable_column');
add_filter('manage_edit-page_sortable_columns', 'add_slug_sortable_column');
ID列の追加とソート
functions.php に以下のコードを追加します。
/* 投稿一覧と固定ページ一覧にID列を追加 */
function add_post_id_column_title($columns) {
$columns['post_id'] = 'ID';
echo '';
return $columns;
}
add_filter('manage_posts_columns', 'add_post_id_column_title');
add_filter('manage_pages_columns', 'add_post_id_column_title');
function add_post_id_column($column_name, $post_id) {
if ($column_name == 'post_id') {
echo $post_id;
}
}
add_action('manage_posts_custom_column', 'add_post_id_column', 10, 2);
add_action('manage_pages_custom_column', 'add_post_id_column', 10, 2);
// ID列のソート
function add_post_id_sortable_column( $columns ) {
$columns['post_id'] = 'ID';
return $columns;
}
add_filter('manage_edit-post_sortable_columns', 'add_post_id_sortable_column');
add_filter('manage_edit-page_sortable_columns', 'add_post_id_sortable_column');
順序列の追加とソート
functions.php に以下のコードを追加します。
/* 投稿一覧と固定ページ一覧に「順序」列を追加 */
function add_menu_order_column($columns) {
$columns['menu_order'] = '順序';
echo '';
return $columns;
}
add_filter('manage_edit-page_columns', 'add_menu_order_column');
add_filter('manage_posts_columns', 'add_menu_order_column');
//「順序」の値を表示
function show_menu_order_column($name, $post_id) {
if ('menu_order' == $name) {
$order = get_post_field('menu_order', $post_id);
echo $order;
}
}
add_action('manage_pages_custom_column', 'show_menu_order_column', 10, 2);
add_action('manage_posts_custom_column', 'show_menu_order_column', 10, 2);
//ソート可能にする
function sort_menu_order_column($columns) {
$columns['menu_order'] = 'menu_order';
return $columns;
}
add_filter('manage_edit-post_sortable_columns', 'sort_menu_order_column');
add_filter('manage_edit-page_sortable_columns', 'sort_menu_order_column');
上記のコードを functions.php に追加することで、「View数」、「スラッグ」、「ID」、「順序」の4つの列が投稿一覧と固定ページ一覧に追加され、各列でソートができるようになります。なお、各列のソート機能は、それぞれの列のヘッダーをクリックすることで動作します。
