You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 17:52:37