VPS参考、测评、推荐
分享你关注的VPS主机优惠信息

探索用于Web应用程序开发的WordPress功能:解锁URL重写功能

探索用于Web应用程序开发的WordPress功能:解锁URL重写功能

现代web应用程序开发框架最好的一点,它们提供了一种生成真正干净的路由(或url方案)的方法,这些路由映射到应用程序结构的概念模型。

例如,给定某种类型的数据(如人员),您可以执行以下操作:

添加、、删除等等。

根据应用程序的性质,您可能能够执行更多的操作(例如添加配偶),但对于本文来说,基本的CRUD操作足以证明这一点。

对于那些一直关注的人来说,一直在研究WordPress提供的各种功能作为应用程序开发的基础。随着继续讨论,我们有必要了解可用于自定义WordPress重写规则的

普通用户可能熟悉如何在WordPress dashboard中更改URL模式(我们将简要讨论这一点以确保我们都在同一页面上),但对于那些需要更改URL模式的用户来说,有更多的功能可用。了解WordPress中的URL重写。

事实上,我们有能力构建URL重写规则来匹配和执行,就像现代基于MVC的框架一样。

理解重写规则为了确保我们都在同一页面上,我们可以将重写规则视为一种将特定模式与网络服务器匹配以从数据库中检索数据的方法。

例如,在标准WordPress安装中,默认的永久链接结构如下:

http://domain.com/? P=123这个URL包含一个查询字符串参数,即P = 123的键值对,在WordPress的上下文中表示“检索ID为123的帖子”。

如果深入查看固定链接设置屏幕上的选项,您还会看到各种选项:

探索用于Web应用程序开发的WordPress功能:解锁URL重写功能

你可能会看到的另一个重写规则的例子是所谓的“美丽的永久链接”或WordPress dashboard中命名的“帖子名称”。

在这种格式中,URL如下所示:

Http://domain.com/post-title/从这里开始,请求的URL进入Web服务器,然后根据一组规则确定带有该标题的帖子的ID,并将其返回给请求客户端(即浏览器)。p》

在这两个例子之间,有一个基本原则在起作用,它确切地演示了重写规则是什么。

简而言之,重写规则定义了一组规则,其中传入的URL被转换为客户端从数据库中检索信息的格式。

当然,这提出了两个问题:

重写规则是如何产生的?也许更重要的是,为什么它们如此复杂?业务重写规则重写规则对开发人员来说是一个挑战,因为它们是基于正则表达式的。杰米·扎温斯基有一句关于正则表达式的老话:

有趣,但却是真的。这就是为什么在WordPress中处理自定义重写规则对许多开发人员来说是一个挑战。

不幸的是,我们无法演示重写规则可以创建或的每种URL模式变体或类型,但我们可以查看几个实际示例,以展示如何开始并提供基础或指导我们在未来的应用程序工作中需要做什么。

刷新重写规则时需要注意的一件事是,当您定义重写规则时,它们不会立即生效-它们已经被刷新。这意味着您需要删除旧的规则集并用新的规则集替换它。

有两种方法可以实现这一点:

您可以单击固定链接设置仪表板中的更改。虽然实际上选择了一个选项,但是您在应用程序的functions.php文件中定义的任何内容都将被。可以调用$ _ rewrite-》flush _ rules();并通过编程解决这个问题。无论选择哪种方法,记住这一步都很重要,因为每次定义新的重写规则时,都需要刷新旧规则。

重写是如何工作的?当实际编写我们自己的重写规则时,理解重写是如何工作的非常重要。

它可以概括为四个步骤:

从web服务器请求URL。如果请求的URL有内容,它将被返回(可以是图像、字体或内容)。如果内容不存在,请求将被定向到index.php,这将与URL的模式相匹配。然后内容将从WordPress返回到请求客户端。如果您有兴趣根据固定链接仪表板中的配置查看重写规则的定义,请检查重写规则检查器插件。

该插件将显示当前用于匹配指定URL模式的所有规则的列表,包括index.php的正则表达式和匹配变量。

探索用于Web应用程序开发的WordPress功能:解锁URL重写功能

这有意义吗?如果没有,我们来看一些简单实用的例子。

重写规则示例因为我们知道模式将被匹配并传递给index.php,所以我们可以使用add_rewrite_rule函数来定义自定义URL的工作方式。

帖子ID的简短标题假设我们正在查看系统中的第一篇帖子,即ID为1的帖子。

在大多数常见的WordPress安装中,这是Hello World,URL通常是http://domain.com/hello-world或http://domain.com/?.。P = 1取决于您的永久链接设置(即您当前的重写规则集)。

但是让我们定义一个规则,这样http://domain.com/first也将加载数据库中的第一篇:

函数示例_ add _ rewrite _ rules(){ add _ rewrite _ rule(‘first‘,index.php?p=1,‘top’);flush _ rewrite _ rules();} add _ action(‘init’,‘example _ add _ rewrite _ rules’);让我们添加另一个规则,它将允许我们在数据库中加载第二篇。即http://domain.com/?. p = 2。

函数示例_ add _ rewrite _ rules(){ add _ rewrite _ rule(‘first‘,index.php?p=1,‘top’);add _ rewrite _ rule(‘second’,index.php?p=2,‘top’);flush _ rewrite _ rules();} add _ action(‘init’,‘example _ add _ rewrite _ rules’);假设您已经阅读了add_rewrite规则的文档,这很容易理解,对吗?

简而言之,它接受三个参数:

第一个参数是匹配所请求URL的正则表达式。在我们的例子中,我们简单的单词。第二个参数是实际获得的URL。同样,在我们的示例中,我们分别检索第一篇文章和第二篇文章。最后,最后一个参数是优先级,可以是“顶部”或“底部”。如果设置为“top”,则该规则将在所有规则之前进行评估;但是,如果是“垫底”,则会最后评估。这些例子都是基本的。这不足以真正向我们展示如何设置自定义路线,例如我们在本文前面概述的路线。为此,我们需要看一些更复杂的表达式。

导入关于刷新重写规则的注释。但在我们这样做之前,应该注意的是,像上面那样调用flush_rewrite_rules()实际上是一种不好的做法。它在上面的例子中有效,但它实际上减慢了网站的加载时间。

事实上,它实际上只需要在重写规则改变时调用。每当插件被激活时都会发生这种情况,或者当主题被激活时这种情况也会发生变化。

在任何情况下,确保正确地挂钩函数,以便重写规则不会在每次加载页面时刷新-只要重写规则本身发生变化。

重写规则的更复杂方法为了引入一组更复杂的重写规则,例如我们在本文前面通过CRUD操作详细介绍的重写规则,了解以下两个函数非常重要:

Add_rewrite_tag将让WordPress了解自定义查询字符串变量。这也与下一个函数结合使用。如前所述,Add_rewrite_rule将允许我们向WordPress添加额外的重写规则(并设置它们的优先级)。现在假设我们有一个名为Personal的自定义帖子类型,它代表应用程序中的某个人。然后,假设个人也有以下方法和相应的可用网址:

全部:http://domain.com/individuals/update:·http://domain.com/individual/update/1用于第一人称删除:http://domain.com/individual/delete/1用于删除第一人称,所以这个模型非常简单,但是我们如何实现它呢?

首先,我们需要定义重写规则:

在本例中,我们将定义两个函数——一个用于更新个人,另一个用于删除个人。下面的代码还假设从浏览器提交的表单将包含一些信息。

具体来说,它假设将发送个人ID、名字、姓氏和其他信息来更新个人。

函数example _ process _ individual($ input){ if(example _ updating _ user()){ example _ update _ individual($ input);} else if(‘true‘= = $ input【‘delete _ individual‘】){ example _ delete _ individual($ input【‘individual _ id‘】);}}if(!is _ admin())add _ action(‘init’,‘example _ process _ individual’);函数example _ update _ individual($input){/*将用于更新用户的假定表单*的传入$ input集合。* *它可能包括ID、名字、*姓氏等信息。* *成功后,使用wp_redirect返回主页,或重新加载*页面以显示错误。*/}函数example _ delete _ individual($ individual _ id){/*使用传入的ID定位单个记录并将其从数据库中删除*。* *成功后,使用wp_redirect返回主页,或重新加载*页面以显示错误。*/} function example _ updating _ user(){ return 0 = = strpos($ _ SERVER【‘REQUEST _ URI‘】,‘/individual/update‘);} function example _ deleting _ user(){ return 0 = = strpos($ _ SERVER【‘REQUEST _ URI‘】,‘/individual/delete‘);}请注意,上面的第一个函数已经挂接到init操作中,只有当用户没有以管理员身份登录时才会触发它。此外,您可以通过有条件地将其设置为仅在来自页面时加载来进一步增强此功能;然而,对于这个例子来说,它达到了目的。

接下来,阅读更新和删除函数的代码注释,了解它们应该如何运行。

最后,请注意最后两个函数是简单的助手程序,旨在允许我们在初始hook函数中编写更清晰的代码。

有点不完整。我知道这是一个不完整的示例,但对于一篇冗长的文章和一个复杂的主题,我的目标是尽可能多地展示WordPress Rewrite API,讨论使用它的优势,并讨论如何使用它来创建更清晰的URL路由。

事实上,这仍然是一个具有挑战性的话题,最好通过实施来掌握它。尽管如此,这是WordPress应用程序的另一个组件,可以作为Web应用程序开发的基础。

下一个问题就讲这么多,现在是时候讨论缓存的概念了。

当然,有许多缓存插件可用于WordPress,但如果您是开发人员,您希望构建一定程度的原生缓存,并且您希望使用WordPress API来实现它。如果是这种情况,熟悉可用的内容以及如何操作非常重要。

说到这里,让我们把注意力转向瞬态API,以便我们可以自己处理一些本机缓存,并回顾这如何帮助第三方缓存机制使我们的应用程序更快。

以上就是Web应用开发探索WordPress功能的详细内容:解锁URL重写功能。更多资讯请关注草根吧VPS其他相关文章!

:探索用于Web应用程序开发的WordPress功能:解锁URL重写功能 https://vps.caogenba.com.com/104160.html

赞(0) 打赏
未经允许不得转载:草根吧VPS_最新VPS信息参考 » 探索用于Web应用程序开发的WordPress功能:解锁URL重写功能
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址