ダッシュボードの「概要」にカスタム投稿タイプ件数を表示する

(3.8以降)
ダッシュボードの「概要」にカスタム投稿タイプ件数を表示する - WordPress 3.8新ダッシュボードを軽くカスタマイズ

説明

管理者向けページが刷新したWordPress 3.8。そのダッシュボードページにはサイトの状況を示す「概要(At a Glance)」ウィジェットがある。この中には「投稿」や「固定ページ」の投稿件数が表示されており、同じようにカスタム投稿タイプの投稿件数を表示できないか調べてみた。

ダッシュボードの各ウィジェットは、/wp-admin/includes/dashboard.phpで定義されており、「概要(At a Glance)」ウィジェットの拡張ポイントを見てみると、'dashboard_glance_items'フィルターが用意されていた。

テーマのfunctions.phpに追加したコードは次の通り。

add_filter( 'dashboard_glance_items', 'mytheme_dashboard_glance_items' );
function mytheme_dashboard_glance_items( $elements ) {
	foreach ( array( 'food', 'drink' ) as $post_type ) {
		$num_posts = wp_count_posts( $post_type );
		if ( $num_posts && $num_posts->publish ) {
			$text = number_format_i18n( $num_posts->publish ).'件の投稿';
			$elements[] = sprintf( '<a href="edit.php?post_type=%1$s" class="%1$s-count">%2$s</a>', $post_type, $text );
		}
	}
	return $elements;
}

このフィルター関数は、パラメータ$elementsにリスト表示の内容(文字列)を追加し、それを返り値としている。青字の'food'と'drink'がカスタム投稿タイプ名であり、こちらは適宜変更してほしい。

追加したカスタム投稿タイプの件数は「○」アイコンで表示される。このアイコンは「Dashicons」と呼ばれており、3.8の管理者ページのいたるところで使用されている。アイコンを変更する場合は、独自のcssを追加すればいい。

add_action( 'admin_print_styles', 'mytheme_dashboard_print_styles' );
function mytheme_dashboard_print_styles() {
?>
<style>
#dashboard_right_now li a.food-count:before { content: '\f232'; }
#dashboard_right_now li a.drink-count:before { content: '\f233'; }
</style>
<?php
}

もちろんDashicons以外を指定することもできるが、まずはDashiconsで好みのアイコンを探すのがお手軽だろう。

関連

お勧めコンテンツ

site_url(2010年6月10日 登録)

string site_url( [ string $path = '' [ , string $scheme = null ] ] )
現在のブログ(サイト)のサイトURLを取得する。サイトURLは、管理者ページの「設定」-「一般」の「WordPressのアドレス(URL)」のこと。

wp_login_form(2010年6月22日 登録)

string wp_login_form( mixed $args )
シンプルなログインフォームを表示する。パラメータ$argsに'echo'=>falseが指定された場合は、表示せずにそのHTMLテキストを取得する。

get_the_post_thumbnail_caption(2016年8月18日 登録)

string get_the_post_thumbnail_caption( mixed $post = null )
投稿ページのサムネイル(アイキャッチ画像)キャプションを取得する。

url_shorten(2015年12月12日 登録)

string url_shorten( string $url [ , int $length = 35 ] )
(表示向けに)URLを短縮する。

wp_delete_post(2012年9月13日 登録)

mixed wp_delete_post( [ int $postid = 0 [ , bool $force_delete = false ] ] )
投稿情報とそのコメント、カスタムフィールドなどの関連情報をまとめて削除する。

最終更新日時 : 2013-12-17 13:57