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 - アクション関数を追加する

お勧めコンテンツ

shortcode_exists(2013年8月4日 登録)

bool shortcode_exists( $tag )
ショートコードが登録されているか調べる。

wp_get_mime_types(2012年12月13日 登録)

array wp_get_mime_types()
MIMEタイプのリストを取得する。

bloginfo(2009年11月12日 登録)

void bloginfo( [ string $show = '' ] )
パラメータ$showで指定されたサイト情報を表示する。$showを省略した場合はブログタイトルを表示する。

wp_list_comments(2014年9月18日 登録)

string wp_list_comments( [ array $args = array() [ , array $comments = null ] ] )
コメントリストを表示する(またはそのHTMLテキストを取得する)。

update_option(2010年7月5日 登録)

bool update_option( string $option, mixed $newvalue [, mixed $autoload = null ] )
サイトオプションの値を更新する。

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