WEBOPIXEL

WordPress管理画面の投稿記事一覧をカスタマイズする

Posted: 2010.09.30 / Category: WordPress / Tag: 

Wordpressで記事を管理するときは投稿一覧画面を表示していろいろとやったりしているかと思います。
これはこれで結構便利に使えるんですが、この項目はいらねえなとか、逆にこの項目があったら良いなという経験は少なからずあるはずです。
そこでこの記事では投稿一覧でカラム(項目)の追加&削除を行い、カスタマイズしたいと思います。

Sponsored Link

またWordpressのバージョンは3.01を使用します。

項目が追加された投稿一覧画面

「作成者」の削除

ブログは大多数の人が一人で運営しているのではないかと思われます。
そんな人には「作成者」の項目はいらなすぎですね。ということで削除しましょう。

現在使用しているテーマフォルダの「functions.php」を開きます。なければ作成しましょう。
最後の行に次のコードを入力します。

functions.php

		function custom_columns($columns) {
				unset($columns['author']);
				return $columns;
		}
		add_filter( 'manage_posts_columns', 'custom_columns' );
	

投稿一覧画面をカスタマイズするには「manage_posts_columns」というフックを使用するらしいです。「unset」で削除する項目を指定しましょう。
「作成者」なら「author」と入れれば削除できると思います。

わざわざfunctionsファイルなんかをいじくってみたわけですが、初期で表示されている項目は上にある「表示オプション」で非表示にできたりするのでした。
「functions.php」で削除すれば「表示オプション」にも表示されなくなるので、絶対表示させたくないって場合は良いかもしれません。

表示オプション画面

カスタムフィールドの項目の追加

削除の次は追加です。
自分で作成したカスタムフィールドを追加してみます。
今回は「subtitle」という値で作成しました。

カスタムフィールドの値

functions.php

		function manage_posts_columns($columns) {
			$columns['subtitle'] = "サブタイトル";
			return $columns;
		}
		function add_column($column_name, $post_id) {
			if( $column_name == 'subtitle' ) {
				echo attribute_escape(get_post_meta($post_id, 'subtitle', true));
			}
		}
		add_filter( 'manage_posts_columns', 'manage_posts_columns' );
		add_action( 'manage_posts_custom_column', 'add_column', 10, 2 );
	

「manage_posts_columns」ではカラムを追加しタイトルを指定します。
値を表示するには「manage_posts_custom_column」というフックを使用するようです。あとは普通のテンプレートと似たような感じでカスタムフィールドを表示するだけですね。

とりあえず表示はできたと思いますが、カスタムフィールドを使用していたり使用していなかったりする場合、空欄の記事ができてしまってちょっと気持ち悪いですね。
といことでカスタムフィールドを使用していない記事にははっきりと「なし」と表示してあげましょう。

functions.php

		function manage_posts_columns($columns) {
			$columns['subtitle'] = "サブタイトル";
			return $columns;
		}
		function add_column($column_name, $post_id) {
			if( $column_name == 'subtitle' ) {
				$stitle = get_post_meta($post_id, 'subtitle', true);
			}
			if ( isset($stitle) && $stitle ) {
				echo attribute_escape($stitle);
			} else {
				echo __('None');
			}
		}
		add_filter( 'manage_posts_columns', 'manage_posts_columns' );
		add_action( 'manage_posts_custom_column', 'add_column', 10, 2 );
	

アイキャッチ(サムネイル)の項目を追加

最後にアイキャッチ(サムネイル)を追加してみます。
やり方はほとんどカスタムフィールドと同じです。

functions.php

//アイキャッチをON
add_theme_support( 'post-thumbnails' );
function manage_posts_columns($columns) {
        $columns['subtitle'] = "サブタイトル";
        $columns['thumbnail'] = __('Thumbnail');
        return $columns;
}
function add_column($column_name, $post_id) {
    //カスタムフィールド取得
    if( $column_name == 'subtitle' ) {
        $stitle = get_post_meta($post_id, 'subtitle', true);
    }
    //アイキャッチ取得
    if ( 'thumbnail' == $column_name) {
        $thum = get_the_post_thumbnail($post_id, array(50,50), 'thumbnail');
    }
    //使用していない場合「なし」を表示
    if ( isset($stitle) && $stitle ) {
        echo attribute_escape($stitle);
    } else if ( isset($thum) && $thum ) {
        echo $thum;
    } else {
        echo __('None');
    }
}
add_filter( 'manage_posts_columns', 'manage_posts_columns' );
add_action( 'manage_posts_custom_column', 'add_column', 10, 2 );