在 WordPress 中,URL 重写规则是通过一个称为“重写 API”的机制来管理的。这个机制允许 WordPress 将用户友好的 URL(如 /about-us/
)映射到实际的查询字符串(如 index.php?p=123
)。以下是 WordPress URL 重写规则的基本概念和工作原理:
1. 重写规则的基本概念
- 友好的 URL:WordPress 允许用户使用更易读的 URL 结构,这些 URL 通常与内容相关,而不是包含复杂的查询参数。
- 重写规则:这些规则定义了如何将请求的 URL 转换为 WordPress 可以理解的查询参数。
2. 重写 API
WordPress 的重写 API 主要通过以下几个函数来实现:
add_rewrite_rule()
:用于添加自定义的重写规则。add_rewrite_tag()
:用于添加自定义的重写标签,以便在 URL 中使用。flush_rewrite_rules()
:用于刷新重写规则,通常在主题或插件激活时调用。
3. 默认重写规则
WordPress 默认提供了一些重写规则,主要包括:
- 文章:
/year/month/day/post-name/
(例如/2023/10/01/my-post/
) - 页面:
/page-name/
(例如/about-us/
) - 分类:
/category/category-name/
(例如/category/news/
) - 标签:
/tag/tag-name/
(例如/tag/wordpress/
)
4. 自定义重写规则示例
以下是一个简单的示例,展示如何添加自定义重写规则:
function custom_rewrite_rule() {
add_rewrite_rule(
'^custom/([^/]*)/?', // 匹配的 URL
'index.php?pagename=custom-page¶m=$matches[1]', // 重写到的查询
'top' // 优先级
);
}
add_action('init', 'custom_rewrite_rule');
在这个示例中,当用户访问 /custom/some-value/
时,WordPress 会将其重写为 index.php?pagename=custom-page¶m=some-value
。
5. 刷新重写规则
在添加或修改重写规则后,通常需要刷新重写规则。可以通过访问 WordPress 管理后台的“设置” -> “固定链接”页面来自动刷新,或者在代码中调用 flush_rewrite_rules()
:
function my_plugin_activation() {
custom_rewrite_rule(); // 添加自定义重写规则
flush_rewrite_rules(); // 刷新重写规则
}
register_activation_hook(__FILE__, 'my_plugin_activation');
6. 使用重写标签
重写标签允许你在 URL 中使用动态部分。例如:
function custom_rewrite_tag() {
add_rewrite_tag('%custom_param%', '([^&]+)');
}
add_action('init', 'custom_rewrite_tag');
然后可以在重写规则中使用这个标签:
function custom_rewrite_rule() {
add_rewrite_rule(
'^custom/([^/]*)/?',
'index.php?pagename=custom-page&custom_param=$matches[1]',
'top'
);
}
add_action('init', 'custom_rewrite_rule');
总结
WordPress 的 URL 重写规则通过重写 API 提供了强大的功能,允许开发者创建用户友好的 URL。通过使用 add_rewrite_rule()
和 add_rewrite_tag()
,可以轻松地添加自定义规则和标签。记得在修改规则后刷新重写规则,以确保新规则生效。