WordPress Ver 3.8になって管理画面のデザインなどが一新されましたが、その際に今までは使えていた管理画面向けのハックやカスタマイズが一部使用できなくなりました。
その使えなくなったものの中で、個人的によく使用していた「カスタム投稿タイプの投稿数をダッシュボードに表示する方法」を3.8以降で使用する方法を見かけたので備忘録兼ねて紹介します。
また、その投稿数に任意でアイコンを指定する方法も併せて紹介します。
ダッシュボードの「概要」にカスタム投稿タイプの投稿数を表示する
イメージはデフォルトのダッシュボードの「概要」をキャプチャしたものです。
今回サンプルとして利用しているWordPressには「投稿」以外に「ニュース(news)」と「ギャラリー(gallery)」という2つのカスタム投稿タイプを作成してそれぞれ記事の投稿もされているんですが、デフォルトでは「概要」の部分には「投稿」しか表示されていません。
以前、管理画面のカスタマイズについてまとめた際に、文言や見栄えなどは変更されていますが「3.カスタム投稿タイプの記事数をダッシュボードに表示する - WordPressの管理画面をカスタマイズする時に使えるハック Part 3」で投稿数や固定ページ数を表示している箇所にカスタム投稿の投稿数も表示させる方法を紹介したのですが、Ver 3.8以降で同じようなことを実装したい場合は別の方法を使う必要があります。
ダッシュボードの「概要」部分にカスタム投稿タイプの投稿数も表示させたい場合は、下記をfunctions.php
に記述することで実装することができます。
function add_custom_post_dashboard_widget() {
$args = array(
'public' => true,
'_builtin' => false
);
$output = 'object';
$operator = 'and';
$post_types = get_post_types( $args, $output, $operator );
foreach ( $post_types as $post_type ) {
$num_posts = wp_count_posts( $post_type->name );
$num = number_format_i18n( $num_posts->publish );
$text = _n( $post_type->labels->singular_name, $post_type->labels->name, intval( $num_posts->publish ) );
if ( current_user_can( 'edit_posts' ) ) {
$output = '<a href="edit.php?post_type=' . $post_type->name . '">' . $num . ' ' . $text . '</a>';
}
echo '<li class="post-count ' . $post_type->name . '-count">' . $output . '</li>';
}
}
add_action( 'dashboard_glance_items', 'add_custom_post_dashboard_widget' );
記述後に表示を確認するとイメージのように「概要」の箇所にカスタム投稿タイプの投稿数が表示され、今回の場合はニュースは2件投稿しているので「2 ニュース」、ギャラリーは1件投稿しているので「1 ギャラリー」という感じで表示されています。
それぞれ投稿タイプ名が投稿数の後ろに付加される形になっているので、これを他の文言にしたいとか統一させたいとかであれば$text
などの部分を変更してください。
アイコンを変更する
先ほどの方法でダッシュボードの「概要」部分にカスタム投稿タイプの投稿数を表示させることができましたが、表示されている箇所にあるアイコンは「投稿」と同じものが表示されています。
どうせなら分かりやすく別のアイコンにしたいという場合は同じくfunctions.php
に下記を追記することで、上のイメージのようにアイコンを任意のものへ変更することができます。
function add_custom_post_dashboard_widget_change_dashicons() {
echo '<style type="text/css">
.news-count a::before {content: "\f123" !important;}
.gallery-count a::before {content: "\f233" !important;}
</style>';
}
add_action( 'admin_head', 'add_custom_post_dashboard_widget_change_dashicons' );
最初に紹介したコードで追加された投稿数の部分にはそれぞれ.xxx-count
という感じでclassが設定されるように記述してあるため、そのclass名の::before
に対して使用するアイコンを指定する記述になります。
classでxxx
の部分は投稿タイプ名が入ってくるようになっており、今回の場合は「ニュース(news)」と「ギャラリー(gallery)」を使用しているので、ニュースは.news-count
、ギャラリーは.gallery-count
をそれぞれ指定しています。
また、今回は変更するアイコンはWordPress本体に含まれているアイコンフォント「Dashicons」を使用・指定していますが、自身で用意したアイコンフォントを指定することももちろんできます。