この記事は最後に更新してから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

お勧め

the_modified_author(2019年10月17日 更新)

void the_modified_author()
更新者の表示名を表示する。

wp_assign_widget_to_sidebar(2021年7月29日 更新)

void wp_assign_widget_to_sidebar( string $widget_id, string $sidebar_id )
ウィジェットをサイドバーに配置する。

get_comment_ID(2018年5月27日 更新)

int get_comment_ID( )
現在のコメントのIDを取得する。

term_is_ancestor_of(2019年3月15日 更新)

bool term_is_ancestor_of( int | object $term1, int | object $term2, string $taxonomy )
タームが子孫関係か調べる。

wp_get_custom_css_post(2019年11月14日 更新)

WP_Post wp_get_custom_css_post( [ string $stylesheet = '' ] )
カスタマイザーで追加したCSS情報を取得する。