WordPress管理画面の固定ページ一覧や投稿一覧にスラッグを表示させる方法

WordPress管理画面の固定ページ一覧や投稿一覧にスラッグを表示させる方法
関連キーワード
WordPress

WordPressで記事を書く際に僕はスラッグを1記事ずつきちんと設定しているんですけども、固定ページ一覧画面や投稿一覧画面でスラッグを確認したくなったのでfunctions.phpに追記しました。

これがかなり使い勝手よかったのでご紹介します。

一覧にスラッグを表示させる

「スラッグを投稿一覧に表示させる」というのがどういう状態かというと、

▼この画像の一番右側にスラッグが表示されています。僕がやりたかったのはこれです。
wordpress-db-slug-01

スラッグが投稿一覧に表示されていてなにが便利かというと「固定ページのURLをサイト内に反映させるときにコピー」したり、「投稿一覧に表示させたスラッグを画像名に使う」などです。

特に前者はコーポレートサイトを作る際に多用してました。

後者は管理方法にもよると思うんですけども、僕の場合だと記事ごとに記事のスラッグ名を画像に付けてますのでわざわざ記事編集画面に入らなくていいのは便利なんですよね。

固定ページ一覧にスラッグを表示させる

固定ページ一覧にスラッグを表示させるためにはこのようなコードをfunctions.phpに追記します。

function add_page_columns($columns) {
  $columns['slug'] = "スラッグ";
	return $columns;
}
function add_page_column_row($column_name, $post_id) {
  if( $column_name == 'slug' ) {
      $post = get_post($post_id);
      $slug = $post->post_name;
      echo esc_attr($slug);
  }
}
add_filter( 'manage_pages_columns', 'add_page_columns');
add_action( 'manage_pages_custom_column', 'add_page_column_row', 10, 2);

上記のコードで表示されるようになったんですが、やけに幅をとるのでCSSで調整しましょう、というのが下記のコードです。(widthの値は好みで調整してください。)

function add_page_columns($columns) {
  $columns['slug'] = "スラッグ";
  echo '<style>
    .fixed .column-slug {width: 8%;}
    </style>';
	return $columns;
}
function add_page_column_row($column_name, $post_id) {
  if( $column_name == 'slug' ) {
      $post = get_post($post_id);
      $slug = $post->post_name;
      echo esc_attr($slug);
  }
}
add_filter( 'manage_pages_columns', 'add_page_columns');
add_action( 'manage_pages_custom_column', 'add_page_column_row', 10, 2);

コードがごちゃごちゃしてくるので、管理画面のCSSを調整する項目だけ別に作ってもいいですね。そのときは先ほどの前者の方のコードに下記のものを追加すると良いです。

function wp_pages_color() {
  echo '<style>
    .fixed .column-slug {width: 8%;}
    </style>';
}
add_action('admin_head', 'wp_pages_color');

サムネイルとスラッグを両方表示させる

以前、投稿一覧にサムネイルを表示させる方法をご紹介しました。

スラッグとサムネイルの2行を追加するという合わせ技もできます。

function add_page_columns($columns) {
	$columns['thumbnail'] = 'サムネイル';
  $columns['slug'] = "スラッグ";
  echo '<style>
    .fixed .column-thumbnail {width: 120px;}
    .fixed .column-slug {width: 8%;}
    </style>';
	return $columns;
}
function add_page_column_row($column_name, $post_id) {
	if ( 'thumbnail' == $column_name ) {
		$thumb = get_the_post_thumbnail($post_id, array(120,120), 'thumbnail');
		echo ( $thumb ) ? $thumb : '-';
	}
  if( $column_name == 'slug' ) {
      $post = get_post($post_id);
      $slug = $post->post_name;
      echo esc_attr($slug);
  }
}
add_filter( 'manage_pages_columns', 'add_page_columns');
add_action( 'manage_pages_custom_column', 'add_page_column_row', 10, 2);

個人的にはスラッグとアイキャッチ画像を設定し忘れてるかどうかを一覧画面でチェックできるためかなり重宝しています。

投稿ページに反映させる場合

これまで紹介したものを投稿一覧にも反映させたい場合は「add_page_columns」「manage_pages_columns」など「pages」と書かれてところを「posts」に変更していけばおっけーです。

function add_posts_columns($columns) {
	$columns['thumbnail'] = 'サムネイル';
  $columns['slug'] = "スラッグ";
  echo '<style>
    .fixed .column-thumbnail {width: 120px;}
    .fixed .column-slug {width: 8%;}
    </style>';
	return $columns;
}
function add_posts_columns_row($column_name, $post_id) {
	if ( 'thumbnail' == $column_name ) {
		$thumb = get_the_post_thumbnail($post_id, array(120,120), 'thumbnail');
		echo ( $thumb ) ? $thumb : '-';
	}
  if( $column_name == 'slug' ) {
      $post = get_post($post_id);
      $slug = $post->post_name;
      echo esc_attr($slug);
  }
}
add_filter( 'manage_posts_columns', 'add_posts_columns' );
add_action( 'manage_posts_custom_column', 'add_posts_columns_row', 10, 2 );

最後に

僕の環境では問題なく使えていますが、なにか不具合がでたらごめんなさい。

functions.phpをいじって画面真っ白になることもありますので、バックアップを確実に取り、自己責任で使ってくださいね。