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

5.7の機能拡張:投稿一覧画面向けのフィルター

説明

昨日、予定通り公開された「WordPress 5.7 Beta 3(以降Beta 3)」。WordPressはバージョンアップ毎にアクションやフィルターが追加されており、今回のバージョンアップでは投稿一覧画面に影響を与えるフィルターが追加されていた。

はじめに、この記事は公開された5.7 Beta 3をもとにしており、正式リリースの際に変更される可能性があることを予めお断りする。

投稿情報のチェックボックスが制御可能

1つ目のフィルターは、投稿リストの表示に使用されている wp_admin/includes/class-wp-posts-list-table.php のcolumn_cbメソッドに追加された'wp_list_table_show_post_checkbox'フィルターである。現在のユーザーが対象の投稿情報の編集権限の有無でチェックボックスの表示/非表示を切り替えていたが、このフィルターを使用することで切り替えを制御できるようになる。

挙動を確認するため、テーマのfunctions.phpに以下のコードを追加してみる。

add_filter( 'wp_list_table_show_post_checkbox', '__return_false', 10, 2 );

投稿一覧画面は次のように変化し、チェックボックスが非表示になったことがわかる。

投稿情報のチェックボックスが非表示になった

実際にこのフィルターを使用する場合は、次のようなコールバック関数を用意する。パラメータ$showは表示フラグ(bool)、$postには対象の投稿情報になる。

function callback_show_post_checkbox( $show, $post ) {

	// $showを変更する処理

	return $show;
}

このフィルターが追加されるきっかけになった提案(trac #51291)を見てみると独自のプラグイン向けになっているようなので、グローバル変数の$pagenowで自身のプラグインの画面なのかを判定しながら$showの値を制御するような使い方になりそうだ。

月プルダウンの内容を変更

2つ目のフィルターは、リスト表示の基になっている wp_admin/includes/class-wp-list-table.php のmonths_dropdownメソッドに追加された'pre_months_dropdown_query'フィルターである。通常の投稿一覧画面の場合、投稿があった月がリストされるが、このフィルターを使うことで任意の月のみを表示させることができる。

挙動を確認するため、テーマのfunctions.phpに以下のコードを追加してみる。

add_filter( 'pre_months_dropdown_query', 'mytheme_months_dropdown', 10, 2 );

function mytheme_months_dropdown( $months, $post_type ) {
	$months = [ (object)[ 'year' => 2020, 'month' => 12 ] ];
	return $months;
}

投稿一覧画面の月プルダウンは次のように変化し、内容が書き変わった。

月プルダウンの内容を変更した

返り値の$monthsはyearとmonthプロパティを持つオブジェクトの配列の場合に有効になり、実際に内容を指定する場合は投稿情報から取得することになるだろう。

このフィルターが追加されるきっかけになった提案(trac #51660)では大量のカスタム投稿タイプの投稿一覧画面において表示に時間がかかるため、その問題を回避したかったようた。月プルダウンはコールバック関数で$monthsを空の配列にすることで非表示になるので、同様の問題を抱えているサイトは5.7のリリースにあわせて対応するとよいだろう。


最終更新 : 2021年02月18日 16: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 )
投稿情報などにタクソノミーを追加する。