WordPress投稿一覧にサムネイル・ID・スラッグ・文字数の項目を追加する方法です。
小さくて見難いですが、上記イメージはデフォルトの投稿一覧をキャプチャしたものです。
表示オプションで何もいじっていなければこの画像のように「タイトル」「作成者」「カテゴリー」「タグ」「コメント」「日時」の6項目が表示されていると思いますが、ここに個人的によく使うことがあるのではと思う「サムネイル」「ID」「スラッグ」「文字数」の4項目を新たに追加・表示させます。
実装にはを使用するので、テーマ内にない場合は作成して下記で紹介する方法をそれぞれ記述してください。
「サムネイル」を追加する
// 投稿一覧にサムネイル追加
function add_posts_columns_thumbnail( $columns ) {
$columns['thumbnail'] = 'サムネイル';
return $columns;
}
function custom_posts_column_thumbnail( $column_name, $post_id ) {
if ( $column_name == 'thumbnail' ) {
$thumb = get_the_post_thumbnail( $post_id, array( 100, 100 ), 'thumbnail' );
echo ( $thumb ) ? $thumb : '-';
}
}
add_filter( 'manage_posts_columns', 'add_posts_columns_thumbnail' );
add_action( 'manage_posts_custom_column', 'custom_posts_column_thumbnail', 10, 2 );
表示させるサムネイルの大きさを変更したい時はget_the_post_thumbnail
部分のarray( 100, 100 )
の部分を任意で変更してください。
また、上記サンプルコードではサムネイルがない場合は-
を表示させるようにしていますが、こちらも他のものに変更したい場合は任意で変更してください。
「ID」を追加する
// 投稿一覧にID追加
function add_posts_columns_postid( $columns ) {
$columns['postid'] = 'ID';
return $columns;
}
function custom_posts_column_postid( $column_name, $post_id ) {
if ( $column_name == 'postid' ) {
echo $post_id;
}
}
add_filter( 'manage_posts_columns', 'add_posts_columns_postid' );
add_action( 'manage_posts_custom_column', 'custom_posts_column_postid', 10, 2 );
「スラッグ」を追加する
// 投稿一覧にスラッグ追加
function add_posts_columns_slug( $columns ) {
$columns['slug'] = 'スラッグ';
return $columns;
}
function custom_posts_column_slug( $column_name, $post_id ) {
if ( $column_name == 'slug' ) {
$slug = get_post( $post_id ) -> post_name;
echo $slug;
}
}
add_filter( 'manage_posts_columns', 'add_posts_columns_slug' );
add_action( 'manage_posts_custom_column', 'custom_posts_column_slug', 10, 2 );
「文字数」を追加する
// 投稿一覧に文字数追加
function add_posts_columns_count( $columns ) {
$columns['count'] = '文字数';
return $columns;
}
function custom_posts_column_count( $column_name, $post_id ) {
if ( $column_name == 'count' ) {
$count = mb_strlen( strip_tags( get_post_field( 'post_content', $post_id ) ) );
echo $count;
}
}
add_filter( 'manage_posts_columns', 'add_posts_columns_count' );
add_action( 'manage_posts_custom_column', 'custom_posts_column_count', 10, 2 );
すべてをまとめて追加する
上で紹介したのは各項目をひとつずつ追加していくものでしたが、4項目すべてをまとめて追加したい場合は下記をfunctions.php
に記述することで実装できます。
// 投稿一覧に「サムネイル」「ID」「スラッグ」「文字数」の4項目を追加
function add_posts_columns( $columns ) {
$columns['thumbnail'] = 'サムネイル';
$columns['postid'] = 'ID';
$columns['slug'] = 'スラッグ';
$columns['count'] = '文字数';
echo '<style type="text/css">
.fixed .column-thumbnail {width: 120px;}
.fixed .column-postid {width: 2%;}
.fixed .column-slug, .fixed .column-count {width: 5%;}
</style>';
return $columns;
}
function custom_posts_column( $column_name, $post_id ) {
if ( $column_name == 'thumbnail' ) {
$thumb = get_the_post_thumbnail( $post_id, array( 100, 100 ), 'thumbnail' );
echo ( $thumb ) ? $thumb : '-';
} elseif ( $column_name == 'postid' ) {
echo $post_id;
} elseif ( $column_name == 'slug' ) {
$slug = get_post( $post_id ) -> post_name;
echo $slug;
} elseif ( $column_name == 'count' ) {
$count = mb_strlen( strip_tags( get_post_field( 'post_content', $post_id ) ) );
echo $count;
}
}
add_filter( 'manage_posts_columns', 'add_posts_columns' );
add_action( 'manage_posts_custom_column', 'custom_posts_column', 10, 2 );
記述後に表示を確認するとこのように投稿一覧画面に「サムネイル」「ID」「スラッグ」「文字数」の4項目が新たに追加されているのを確認できます。
サンプルコード内で.fixed .column-thumbnail
などを指定しているCSSは見栄えを整えるために簡易的に記述しているものなので、必要なければ削除して問題ないです。
ちなみに、ここでは投稿一覧を対象にして紹介してきましたがmanage_posts_columns
とmanage_posts_custom_column
のposts
部分を変更すれば固定ページやカスタム投稿の一覧などでも使えます。