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

如何在WordPress古腾堡编辑器保存页面后保留自定义查询字符串

解决WordPress古腾堡编辑器保存后自定义查询字符串消失的问题

要让自定义查询字符串在古腾堡编辑器保存/更新页面后持续保留,你可以通过WordPress的钩子修改重定向和URL生成逻辑,以下是两种可行方案:

方案一:修改保存后的重定向URL

使用redirect_post_location钩子,在文章保存完成后,将自定义查询参数追加到重定向的编辑器URL中:

add_filter('redirect_post_location', 'preserve_custom_query_string_in_gutenberg', 10, 2);
function preserve_custom_query_string_in_gutenberg($location, $post_id) {
    // 替换为你实际使用的自定义参数名
    $target_param = 'custom_param';
    
    // 验证来源是编辑器页面且存在目标参数
    if (isset($_REQUEST[$target_param]) && strpos($_SERVER['HTTP_REFERER'], 'wp-admin/post.php') !== false) {
        $param_value = sanitize_text_field($_REQUEST[$target_param]);
        // 避免重复添加参数
        if (strpos($location, "{$target_param}=") === false) {
            $location = add_query_arg($target_param, $param_value, $location);
        }
    }
    return $location;
}

方案二:修改编辑器页面的URL生成逻辑

使用admin_url钩子,确保后台生成编辑页面URL时自动带上自定义参数:

add_filter('admin_url', 'add_custom_query_string_to_gutenberg', 10, 3);
function add_custom_query_string_to_gutenberg($url, $path, $blog_id) {
    // 替换为你实际使用的自定义参数名
    $target_param = 'custom_param';
    
    // 检查是否是编辑文章的页面且存在目标参数
    if ($path === 'post.php' && isset($_REQUEST[$target_param])) {
        $param_value = sanitize_text_field($_REQUEST[$target_param]);
        if (strpos($url, "{$target_param}=") === false) {
            $url = add_query_arg($target_param, $param_value, $url);
        }
    }
    return $url;
}

注意事项

  • 将代码中的custom_param替换为你实际使用的查询字符串参数名称
  • 代码需要添加到当前主题的functions.php文件中,建议使用子主题进行修改,避免主题更新导致代码丢失
  • 如果需要保留多个自定义参数,可以扩展代码逻辑,循环检查并添加所有需要的参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:25:29