この記事は最後に更新してから1年以上経過しています。

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

説明

ちょうど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関数で投稿情報を取得する前にフィルターが用意されていればいいかなと思うわけだが、ないものねだりしてもしかたないので、とりあえずはこんな感じでの対応でいいだろう。


最終更新 : 2014年01月17日 15:27


お勧め

wp_save_post_revision(2024年1月10日 更新)

int | WP_Error | void wp_save_post_revision( int $post_id )
現状の投稿のリビジョンを作成する。

get_the_author_posts_link(2019年8月21日 更新)

string get_the_author_posts_link( )
投稿者アーカイブページのリンクを取得する。

get_year_link(2012年2月2日 更新)

string get_year_link( mixed $year )
年アーカイブのURLを取得する。

register_taxonomy(2022年6月1日 更新)

WP_Taxonomy | WP_Error register_taxonomy( string $taxonomy, array | string $object_type, array | string $args = array() )
タクソノミーを登録する。

wp_add_object_terms(2013年8月6日 更新)

mixed wp_add_object_terms( int $object_id, mixed $terms, mixed $taxonomy )
投稿情報などにタクソノミーを追加する。