2022年03月26日

Actionフック:pre_get_posts

アクションフックの pre_get_posts は、メインクエリ: query_posts() が実行される時にフックされます。

query_posts()のDBからの抽出条件や並び順を変更したい時に利用します。

 

1.このアクションフックの基本形

基本系は下記になります。

function ○○(){
  if (条件指定){
    set_query_var();  // 検索条件を変更します。
  }
}
add_action('pre_get_posts', '〇〇' );

'pre_get_posts'に参照変数はありません。

■条件指定は 判断関数 で指定します。

■検索条件は set_query_var() で設定します。

 ­注意

query_posts()は色々な所で利用されています。

よって「条件指定」を間違えると、カテゴリ表示画面では良かったが、ダッシュボードの投稿一覧の並び順が変わってしまった!等の問題を起こす事があります。

よって、この「条件指定」には注意をして下さい。

 


事例

下記はこのサイトで設定している設定です。

function my_query() {
	if(is_search()){
		set_query_var( 'post_type', 'post'); // 検索表示は投稿文書に限定します。
	}
}
add_action( 'pre_get_posts', 'my_query' );

■検索の基本は投稿ページと固定ページです。これを投稿ページに限定しています。

 

アクションフック&関数
  • admin_init
  • admin_menu
  • after_setup_theme
  • customize_register
  • manage_pages_custom_column
  • manage_posts_custom_column
  • pre_get_posts
  • save_post
  • widgets_init
  • wp_enqueue_scripts
  • wp_head
  • add_editor_style()
  • add_post_type_support()
  • add_theme_support()
  • do_action()
  • get_post()
  • get_theme_mod()
  • register_nav_menu()
  • register_post_type()
  • register_sidebar()
  • register_taxonomy()
  • register_widget()
  • remove_action()
  • remove_editor_styles()
  • remove_theme_support()
  • set_post_thumbnail_size()
  • set_query_var()
  • show_admin_bar()
  • unregister_nav_menu()
  • unregister_widget()
  • wp_enqueue_script()
  • wp_enqueue_style()