WordPress页面名称后传递URL参数及404问题解决求助
WordPress 自定义页面URL重写及参数获取解决方案
问题根源
你当前的重写规则仅匹配partners/后单一级别的参数,但需求是两级路径结构(如category/abcd),同时未注册自定义查询变量,导致规则不生效且无法获取参数。
完整解决方案步骤
添加正确的重写规则与注册查询变量
将以下代码添加到主题的functions.php文件中:// 添加自定义重写规则 add_action('init', 'custom_partners_rewrite_rule'); function custom_partners_rewrite_rule() { // 匹配 partners/类型/值 的URL结构 add_rewrite_rule( '^partners/([^/]+)/([^/]+)/?$', 'index.php?pagename=partners&partner_type=$matches[1]&partner_value=$matches[2]', 'top' ); } // 注册自定义查询变量,让WordPress识别 add_filter('query_vars', 'register_partners_query_vars'); function register_partners_query_vars($vars) { $vars[] = 'partner_type'; $vars[] = 'partner_value'; return $vars; }刷新重写规则
登录WordPress后台,进入「设置」→「固定链接」,无需修改任何选项,直接点击「保存更改」,触发重写规则刷新。在页面模板中获取参数
在partners页面的模板文件(如page-partners.php)中,使用以下代码获取参数:$partner_type = get_query_var('partner_type'); // 获取category/details这类类型标识 $partner_value = get_query_var('partner_value'); // 获取abcd/xyz这类对应值 // 按需使用参数,示例逻辑: if ($partner_type && $partner_value) { if ($partner_type === 'category') { // 处理分类筛选逻辑 echo '当前筛选分类:' . $partner_value; } elseif ($partner_type === 'details') { // 处理详情展示逻辑 echo '当前展示的合作伙伴ID:' . $partner_value; } }
额外说明
- 若需支持单级参数的URL(如
partners/abcd),可额外添加一条匹配单级路径的重写规则,但需注意规则顺序,避免冲突。 - 修改主题文件前建议备份,防止语法错误导致网站异常。
内容的提问来源于stack exchange,提问作者initial
相关产品推荐
相关产品推荐

