如何在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
相关产品推荐
相关产品推荐

