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

WordPress中stuff/foo路径页面追加API数据问题求助

我来帮你搞定这个问题!你遇到的核心问题是WordPress默认没有stuff/foo这个路由的规则,所以要么返回404,要么被重定向回主页面。下面是一套完整的解决方案,分步骤来:

解决方案步骤

1. 添加自定义重写规则

首先得告诉WordPress,当用户访问stuff/foo时,实际上要加载stuff页面,同时标记这是一个特殊请求。用add_rewrite_rule来实现:

function custom_stuff_foo_rewrite_rule() {
    // 匹配 stuff/foo 路径,映射到stuff页面并传递自定义标记变量
    add_rewrite_rule(
        '^stuff/foo/?$',
        'index.php?pagename=stuff&is_stuff_foo=true',
        'top' // 放在规则顶部,避免被其他规则覆盖
    );
}
add_action('init', 'custom_stuff_foo_rewrite_rule');

2. 注册自定义查询变量

WordPress默认会忽略未知的查询变量,所以得把我们刚才用的is_stuff_foo注册进去,让系统能识别它:

function custom_stuff_foo_query_var($vars) {
    $vars[] = 'is_stuff_foo';
    return $vars;
}
add_filter('query_vars', 'custom_stuff_foo_query_var');

3. 在the_content钩子中追加API数据

现在访问stuff/foo时,WordPress会加载stuff页面,同时is_stuff_foo变量会被设为true。我们可以在the_content钩子里检查这个变量,然后追加API数据:

function append_stuff_foo_content($content) {
    // 确认是stuff/foo的请求,且当前页面确实是stuff
    if (get_query_var('is_stuff_foo') && is_page('stuff')) {
        // 替换成你的API请求逻辑
        $api_response = wp_remote_get('https://your-api-endpoint.com/data');
        
        if (!is_wp_error($api_response)) {
            $api_data = json_decode(wp_remote_retrieve_body($api_response), true);
            
            // 把API数据转成HTML追加到原有内容后,示例结构可根据你的需求调整
            $additional_html = '<div class="stuff-foo-api-content">';
            $additional_html .= '<h3>来自API的补充内容</h3>';
            if (!empty($api_data['content'])) {
                $additional_html .= '<p>' . esc_html($api_data['content']) . '</p>';
            }
            $additional_html .= '</div>';
            
            $content .= $additional_html;
        }
    }
    return $content;
}
add_filter('the_content', 'append_stuff_foo_content');

4. 刷新重写规则

添加完代码后,必须刷新WordPress的重写规则才能生效:

  • 登录后台进入设置 → 固定链接
  • 不用修改任何选项,直接点击「保存更改」即可。

为什么之前的方法失败?

  • 第一种方法(直接用the_content):因为WordPress没有stuff/foo的路由规则,系统会直接判定页面不存在返回404,钩子根本没机会触发。
  • 第二种方法(重置pagename):WordPress有canonical重定向机制,当它发现请求URL和页面的规范URL不一致时,会自动跳转到规范URL(也就是/stuff),所以你会看到跳转现象。

按照上面的步骤操作,就能实现你想要的效果:访问stuff/foo时显示stuff页面内容,同时追加API数据,既不会404也不会跳转。

内容的提问来源于stack exchange,提问作者321zeno

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:24:20