wordpress - 仅修改具有 meta_query 值的帖子的 WordPress $query 并应用 category__not_in 参数
问题描述
我有一个名为“advanced_filter”的高级自定义字段,这是一个添加到所有帖子的真/假字段。如果该字段被选中,我想将 category__not_in 应用于该帖子。
如果帖子有某个类别,我不想显示帖子。类别 ID 是根据用户动态选择的,并在单独的函数中分配给 $post_category_id_array_diff_ids 变量。那工作正常。
我一直在使用 pre_get_posts 挂钩来修改查询,因为查询是由插件(tagDiv Composer)生成的,并且无法在模板页面上访问查询。
我正在尝试实现类似这个基本功能的东西:
function my_pre_get_posts( $query ) {
if ( !is_admin() && $query->is_category( 'Partner News' ) && ! $query->get('page_id') == get_option('page_on_front') ) {
$query->set( 'category__not_in', $post_category_id_array_diff_ids ); }
}
add_action( 'pre_get_posts', 'my_pre_get_posts' );
但是,我不想对所有帖子都这样做。如果选中了自定义字段“advanced_filter”,我只想添加查询参数“category__not_in”。否则我不想修改查询。
我也尝试生成一个新的 WP_query 但这不起作用。
function my_pre_get_posts( $query ) {
if ( !is_admin() && $query->is_category( 'Partner News' ) && ! $query->get('page_id') == get_option('page_on_front') ) {
$args1 = array(
'posts_per_page' => -1,
'post_type' => 'post',
'meta_query' => array(
array(
'key' => 'advanced_filter',
'value' => '1',
'compare' => '='
)
)
'category__not_in' => $post_category_id_array_diff_ids
);
$q1 = new WP_query($args1);
if($q1->have_posts()) :
$firstPosts = array();
while($q1->have_posts()) : $q1->the_post();
endwhile;
endif;
}
}
add_action( 'pre_get_posts', 'my_pre_get_posts' );
但这不起作用。
如何仅将 category__not_in 应用于选中了 advanced_filter 自定义字段的帖子而不应用于所有帖子。
谢谢!
解决方案
推荐阅读
- r - 如何让整齐的点接受可变范围
- angular - Ngrx 8 错误地声称我的状态不可序列化
- r - 我想为条形图扩展一个自定义函数,以便我可以堆叠条形图
- http - 从简单 HTTP 服务器中的每个文件中删除 .html 扩展名
- reactjs - 标签已关闭,但编译器抛出“解析错误:预期对应的 JSX 结束标签”
- python - 从数据库类调用执行方法
- java - 无法下载文件:找不到可接受的表示
- javafx - JavaFX 中的应用程序启动方法中的 java.lang.IllegalAccessError 和异常
- javascript - react-native 和 react-navigation:从 TabNavigator 中的同级屏幕访问参数
- python - 如何在同一轴上绘制来自三个不同时间段的 x/y 数据点以进行分析?