使用add_rewrite_rule()为WordPress添加自定义URL重写规则

本文主要讲解如何使用add_rewrite_rule()为WordPress添加自定义URL重写规则

add rewrite rule 描述

add_rewrite_rule() 允许我们为 WordPress 添加自定义URL重写规则,该函数通常和 add_rewrite_tag() (允许我们添加 WordPress 可以识别的自定义查询参数)配合使用。

add rewrite rule 使用

<?php add_rewrite_rule($regex, $redirect, $after); ?>

add rewrite rule 参数

$regex

(string) (必需) 一个匹配请求 URL 的正则表达式,可是使用一个或多个正则表达式组。
默认:None

$redirect

(string) (必需):真正需要获取的 URL, ($regex 匹配时).。我们可以使用 $matches[] 数组在这里插入捕获获的匹配组。
默认: None

$after

(string) (可选):这可以是 ‘top’ 或 ‘bottom’.。’top’ 将在 WordPress 现有的规则之前优先处理, ‘bottom’ 将在其他规则之后处理。
默认: “bottom”

add rewrite rule 使用示例基本使用方法

首先,我们可以很方便的获取某个页面的 ID,使用正则表达式匹配页面 ID,我们就可以自定义这个页面的访问 URL 了。

add_action('init', function (){    add_rewrite_rule('^leaf/([0-9]+)/?', 'index.php?page_id=$matches[1]', 'top');});

”获取匹配

现在,我们可以通过下面的自定义 URL 访问同一个页面了。

http://example.com/leaf/95

在自定义模板中使用查询字符串

让我们假设你正在创建一个用来展示营养信息的页面 “Nutrition”。此页面使用了一个自定义模板,并且有两个参数,食物和品种。在主题目录中创建一个名为 my-custom-template.php 的文件,文件内容如下:

<?php/*** Template Name: Nutritional Information*/get_header();global $wp_query;echo 'Food : ' . $wp_query->query_vars['food'];echo '<br />';echo 'Variety : ' . $wp_query->query_vars['variety'];// ... more ...get_footer();?>

使用上面的模版创建一个页面, 记下这个新页面的 ID,然后使用 add_rewrite_tag() 让 WordPress 可以识别自定义查询变量 「food」 和 「variety」,示例代码如下:

add_action('init', function (){    add_rewrite_tag('%food%', '([^&]+)');    add_rewrite_tag('%variety%', '([^&]+)');}, 10, 0);

我们访问以下页面的时候, 这个页面将通过查询字符串传递过来两个自定义参数。

http://example.com/index.php?page_id=12&food=milkshake&variety=strawberry

现在我们可以创建自定义规则来重写上面的查询字符串为静态化的 URL 了,添加下面的代码到主题或插件中,替换其中的 12 为我们上面创建的自定义页面的 ID。创建完成后,不要忘了重新保存以下固定链接设置,以便让新的自定义重写规则生效。

add_action('init', function (){    add_rewrite_rule('^nutrition/([^/]*)/([^/]*)/?', 'index.php?page_id=12&food=$matches[1]&variety=$matches[2]', 'top');}, 10, 0);

重新保存了固定链接设置后,我们就可以通过 URL http://example.com/nutrition/milkshakes/strawberry/ 来访问我们重写后的自定义页面了。

常见问题
源码、模板插件上传安装提示错误怎么办?
1、本站在打包Wordpress插件或者模板的时候,一般会将官方文档、官方申明、已经其他文件一起打包,因此,大部分插件模板在安装前需要解压缩。 2、强烈推荐服务器使用linux系统,环境推荐 apache2+php+mysql,别给我说你还是你还是使用的windows服务器。。。。
购买后无法下载或者提取码错误怎么办?
请联系客服QQ:125252828 或者微信:dobunkan,由于骚扰信息过多,加好友时请说明原由!
小白建站啥都不会怎么办?
请与客服联系,沟通具体的技术支持。由于搭建环境、调试程序需要花费一些时间,可能会收取一些费用。
怎样催促站长更新?
直接微信或者QQ联系本站客服,提供最新版本号以及软件名称,客服会在第一时间更新,如果超过2-3年未更新的请先联系站长后再确认是否需要下载。
为什么打开链接看不到最新版本?
因为网盘默认是按名称排序,最新版本不一定会排在第一个,请打开链接后点击右上角的“修改日期”,这时候更新列表就会按更新日期排序了。
原文链接:https://www.dobunkan.com/tools/26595,转载请注明出处。
0

评论0

请先
显示验证码
没有账号?注册  忘记密码?

社交账号快速登录

学课技术网欢迎您的加入!