WordPress 检查查询是否针对 pre_get_posts 过滤器中的自定义类型

我正在尝试使用pre_get_posts过滤器修改自定义帖子类型查询:


function custom_query( $query ) {


   $meta_query = array(

        array(

            'taxonomy' => 'a_tax_name',

            'field' => 'slug',

            'terms' => 'a-slug-name'

        )

    );

    $query->set('tax_query', $meta_query);


    return $query;


}


add_action('pre_get_posts', 'custom_query');

它可以工作,但查询也适用于我页面上的所有查询(菜单项、侧边栏、页脚等)。我只希望它修改自定义帖子类型查询。我尝试在函数中添加:


if( $query->is_main_query() ) {

  return;

}

或者


if ( 'my_custom_post_type' !== get_post_type() ) {

   return;

}

但不工作。如何pre_get_posts仅在自定义帖子类型上使用过滤器?


蓝山帝景
浏览 136回答 1
1回答

有只小跳蛙

例如,您可以使用$query->get('post_type')从查询变量中检索帖子类型并在条件中使用它。
打开App,查看更多内容
随时随地看视频慕课网APP