wordpress知识库
网站首页 > 知识库 > wordpress知识 >

WordPress自定义一个路由规则

2014/01/04

在WordPress中,路由负责将传入的URL请求映射到相应的处理程序或内容。它决定了当用户访问特定URL时应该执行什么代码。

WordPress的路由系统主要依靠两个概念:固定链接(permalink)和查询参数(query parameters)

  1. 固定链接(Permalink): WordPress使用固定链接结构来定义URL的格式。这些链接在WordPress后台的“设置” -> “固定链接”页面进行配置。固定链接可以是多种形式,比如带日期/文章标题的格式,比如/%year%/%postname%/,或者自定义的格式,比如/blog/%postname%/。固定链接定义了网站中内容的URL结构,而路由系统会根据固定链接来解析URL请求。

  2. 查询参数(Query Parameters): 当请求的URL无法匹配到固定链接时,WordPress会转而使用查询参数来解析URL。查询参数是URL中带有?和键值对的部分,比如?page_id=123WordPress插件的路由系统使用查询参数来确定要加载的页面、文章、分类目录等内容。

WordPress的路由系统在执行过程中会进行以下操作:

  1. 解析URL: 首先,WordPress会解析传入的URL,提取固定链接或查询参数。

  2. 匹配固定链接: 如果解析到的URL匹配了一个固定链接规则,WordPress会根据规则将请求路由到对应的页面、文章、分类目录等内容。

  3. 处理查询参数: 如果解析到的URL没有匹配到固定链接规则,WordPress会根据查询参数来确定要加载的内容。比如,根据查询参数page_id=123加载页面ID为123的页面。

  4. 执行处理程序: 一旦确定了要加载的内容,WordPress会执行相应的处理程序来获取内容的数据,并进行处理,以便生成页面的内容。

WordPress的路由系统根据固定链接和查询参数来解析和匹配URL,并根据匹配结果执行相应的处理程序,以生成对应的页面内容。这使得WordPress能够根据URL请求动态生成内容,并提供用户访问的不同页面。

要在WordPress中自定义一个路由规则,你可以使用add_rewrite_rule函数。这个函数允许你添加自定义的URL重写规则,以便将自定义的URL结构映射到特定的WordPress查询。

下面是一个简单的示例,演示如何在WordPress中添加自定义的路由规则:

function custom_rewrite_rule() {
    add_rewrite_rule('^my-page/([^/]+)/?', 'index.php?custom_param=$matches[1]', 'top');
}
add_action('init', 'custom_rewrite_rule');

在这个示例中,我们定义了一个名为custom_param的自定义查询参数,并将^my-page/([^/]+)/?模式的URL重写到index.php,并将custom_param作为查询参数传递给WordPress。

一旦你添加了自定义的路由规则,你可能还需要刷新WordPress的重写规则,以便让新的规则生效。你可以通过在WordPress后台的“设置” -> “固定链接”页面点击“保存更改”来完成这一步骤。

请注意,自定义路由规则需要谨慎使用,因为它们可能会影响WordPress的默认行为。确保你了解自定义路由规则的影响,并测试它们在你的网站上的行为。