php - 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
仅在自定义帖子类型上使用过滤器?
解决方案
例如,您可以使用$query->get('post_type')
从查询变量中检索帖子类型并在条件中使用它。
推荐阅读
- php - 使用表-tblraw_suptrans、tblraw_cat 和 tblraw_supplier 合计借方和贷方
- c# - Bot framework 4 向 Choice Prompt Choice 添加额外的元数据
- python - 如何在 PyQt 中的类之间共享数据?
- flutter - Flutter simple_slider 安装问题
- regression - 为什么在 STAN 中使用 log-link 时要指定“exp()”?
- flutter - 颤振| 当键盘弹出时,会有BottomOverFlowed。需要精确的设计,如图所示
- ios - 适用于不同设备/屏幕/分辨率的 iOS 启动图像
- c++ - 实例化时结构字段中的默认值
- python - Python Pandas 删除最后一行显示无
- javascript - 使用脚本管理器插入 javascript 代码