3.8の「アクティビティ」ウィジェットに投稿以外の情報も表示する

(3.8.0以降)
3.8の「アクティビティ」ウィジェットに投稿以外の情報も表示する - WordPress 3.8新ダッシュボードを軽くカスタマイズ(その2)

説明

ちょうど1月前の「ダッシュボードの「概要」にカスタム投稿タイプ件数を表示する」にて、WordPress 3.8新ダッシュボードの「概要」ウィジェットにカスタム投稿タイプの投稿数を表示する方法を紹介したが、今回のその続編で「アクティビティ」ウィジェットを拡張する方法を紹介する。

「アクティビティ」ウィジェットに表示される「最近公開」は、標準では投稿情報(post_typeが'post')のみで、固定ページやカスタム投稿タイプの内容は表示されない。一般的なブログであれば標準で何ら問題ないわけだが、カスタム投稿タイプを利用してサイト構築している場合は「アクティビティ」ウィジェットにその投稿情報を表示したいケースがある。ざっと調べていくと、/wp-admin/includes/dashboard.phpで定義されているwp_dashboard_recent_posts関数でWP_Queryクラスを利用していた。そんなわけで、自テーマのfunctions.phpに'pre_get_posts'アクション関数を登録することで、目的は達成できた。追加したソースコードは次の通りである。

add_action( 'admin_init', 'my_admin_init' );
function my_admin_init() {
	add_action( 'pre_get_posts', 'my_dashboard_site_activity_recent_posts' );
}
function my_dashboard_site_activity_recent_posts( $query ) {
	foreach( debug_backtrace() as $trace ) {
		if ( $trace['function'] == 'wp_dashboard_recent_posts' ) {
			$query->set( 'post_type', array( 'post', 'foot', 'drink' ) );
			break;
		}
	}
}

'pre_get_posts'アクションはさまざまなところで呼び出されるため、ここでは管理者ページ限定アクションである'admin_init'アクション関数を利用し、その中で登録を行っている。'pre_get_posts'アクション関数内では、PHPのdebug_backtrace関数を利用し、呼び出し経路を辿ってwp_dashboard_recent_posts関数からの呼び出し時のみ投稿タイプを変更している。ここでは、'post'の他にカスタム投稿タイプ名として'foot'と'drink'の3つを指定しているが、実際に利用する際は自テーマに合わせて適当に変更してほしい。

個人的にはdebug_backtrace関数で呼び出し経路を調べるのではなく、wp_dashboard_recent_posts関数で投稿情報を取得する前にフィルターが用意されていればいいかなと思うわけだが、ないものねだりしてもしかたないので、とりあえずはこんな感じでの対応でいいだろう。

関連

  • add_action - アクション関数を追加する

お勧めコンテンツ

previous_posts(2011年4月8日 登録)

string previous_posts( [ bool $echo = true ] )
アーカイブページなどの前ページリンクを取得または表示する。

get_locale(2010年6月15日 登録)

string get_locale( )
現在のロケール情報('ja'や'en_US'など)を取得する。

get_network_option(2017年3月23日 登録)

mixed get_network_option( int $network_id, string $option [ , mixed $default = false ] )
ネットワークオプション(サイトオプション)を取得する。

wp_head(2010年9月8日 登録)

void wp_head( )
wp_headアクションを実行する。

get_search_form(2009年11月25日 登録)

void get_search_form( [ bool $echo = true ] )
サイト内検索フォームのテンプレートファイルを読み込んで表示する。

最終更新日時 : 2014-01-17 15:27