WordPress自定义文章类型查询ID字段问题:文章组件无响应
排查文章组件查询过滤器失效问题
确认钩子名称准确性
首先核实组件文档或代码中,用于修改查询的钩子是否确实是my_query。很多主题/插件会使用pre_get_posts这类通用钩子,或自定义其他钩子名称。如果是自定义组件,要确保查询执行时调用了apply_filters('my_query', $args, $widgetControlsValues),否则过滤器不会触发。修正元查询逻辑
若product_1_title是精确匹配需求,把compare从LIKE改成=,避免模糊匹配导致无结果:function myQueryFilter($args, $widgetControlsValues) { $args['post_type'] = 'success-case'; $args['meta_query'] = array( array( 'key' => 'product_1_title', 'value' => 'My Computer', 'compare' => '=', ), ); return $args; } add_filter('my_query', 'myQueryFilter', 10, 2);同时确认自定义字段名
product_1_title和后台设置的完全一致(大小写、下划线都不能出错)。调试查询参数
在过滤器函数中添加日志输出,检查最终查询参数是否符合预期:function myQueryFilter($args, $widgetControlsValues) { $args['post_type'] = 'success-case'; $args['meta_query'] = array( array( 'key' => 'product_1_title', 'value' => 'My Computer', 'compare' => '=', ), ); // 输出到PHP错误日志 error_log(print_r($args, true)); return $args; } add_filter('my_query', 'myQueryFilter', 10, 2);查看服务器PHP错误日志,确认
post_type和meta_query是否正确设置,有没有被其他过滤器覆盖。核实目标文章存在
手动在后台检查:是否有post_type为success-case的文章,且该文章的product_1_title自定义字段值确实是My Computer——如果没有符合条件的文章,组件自然无内容。调整过滤器优先级
若有其他过滤器同时修改该查询,可能会覆盖你的设置。尝试提高优先级(比如改为20),确保你的过滤器最后执行:add_filter('my_query', 'myQueryFilter', 20, 2);
内容的提问来源于stack exchange,提问作者segaf
相关产品推荐
相关产品推荐

