如何在WordPress中配置URL重写规则实现自定义链接转换
WordPress 自定义重写规则实现URL结构转换
你需要将代码添加到当前激活主题的functions.php文件中,或者自定义功能插件的代码文件中,完整实现步骤如下:
1. 注册自定义重写规则与查询变量
首先要让WordPress识别你自定义的URL结构,同时允许读取自定义参数:
// 注册重写规则 function custom_explore_rewrite_rule() { // 适配示例目标URL结构:/explore/sauna-gutschein-{地区名}/ add_rewrite_rule( '^explore/sauna-gutschein-([^/]+)/?$', 'index.php?pagename=explore®ion=$matches[1]&sort=latest', 'top' ); // 如果需要sort参数也做成动态路径,可扩展规则,比如: // add_rewrite_rule( // '^explore/sauna-gutschein-([^/]+)/([^/]+)/?$', // 'index.php?pagename=explore®ion=$matches[1]&sort=$matches[2]', // 'top' // ); } add_action('init', 'custom_explore_rewrite_rule'); // 注册允许WordPress识别的自定义查询参数 function custom_explore_query_vars($vars) { $vars[] = 'region'; $vars[] = 'sort'; return $vars; } add_filter('query_vars', 'custom_explore_query_vars');
2. 旧链接自动301跳转(可选,避免重复内容收录)
如果需要把原来带查询字符串的旧URL自动跳转到新的美观URL,可以添加以下代码:
function custom_explore_old_url_redirect() { if (is_page('explore') && isset($_GET['region'])) { $region = sanitize_title($_GET['region']); $sort = isset($_GET['sort']) ? $_GET['sort'] : 'latest'; $new_url = home_url("/explore/sauna-gutschein-{$region}/"); // 如果sort是动态的,调整URL拼接规则即可 wp_redirect($new_url, 301); exit; } } add_action('template_redirect', 'custom_explore_old_url_redirect');
3. 生效重写规则
代码添加完成后,进入WordPress后台:设置 -> 固定链接,直接点击「保存更改」按钮,无需修改任何配置,即可刷新重写规则缓存,让新规则生效。
验证方法
在你的explore自定义模板中,使用get_query_var('region')即可读取到URL中传递的地区参数,使用get_query_var('sort')即可读取排序参数,不需要直接调用$_GET变量。
内容的提问来源于stack exchange,提问作者Arshad Mansoor
相关产品推荐
相关产品推荐

