Heim  >  Artikel  >  CMS-Tutorial  >  Entdecken Sie WordPress-Funktionen für die Entwicklung von Webanwendungen: Schalten Sie Funktionen zum Umschreiben von URLs frei

Entdecken Sie WordPress-Funktionen für die Entwicklung von Webanwendungen: Schalten Sie Funktionen zum Umschreiben von URLs frei

PHPz
PHPzOriginal
2023-09-04 20:09:141228Durchsuche

Das Beste an modernen Frameworks für die Entwicklung von Webanwendungen ist, dass sie eine Möglichkeit bieten, wirklich saubere Routen (oder URL-Schemata) zu generieren, die einem konzeptionellen Modell der Anwendungsstruktur zugeordnet sind.

Beispielsweise können Sie bei einer bestimmten Art von Daten (z. B. Persönlich) Folgendes tun:

  • Hinzufügen
  • Update
  • Löschen

Warte.

Abhängig von der Art Ihrer Bewerbung können Sie möglicherweise weitere Vorgänge durchführen (z. B. das Hinzufügen eines Ehepartners), aber für die Zwecke dieses Artikels reichen grundlegende CRUD-Vorgänge aus.

Für diejenigen unter Ihnen, die aufgepasst haben: Wir haben uns die verschiedenen Funktionen angesehen, die WordPress als Grundlage für die Anwendungsentwicklung bietet. Während wir unsere Diskussion fortsetzen, lohnt es sich, einen Blick auf die APIs zu werfen, die zum Anpassen von WordPress-Rewrite-Regeln verfügbar sind.

Normale Benutzer wissen möglicherweise, wie man das URL-Schema im WordPress-Dashboard ändert (wir werden dies kurz besprechen, um sicherzustellen, dass wir alle auf dem gleichen Stand sind), für diejenigen, die das URL-Schema ändern müssen, gibt es jedoch viel zu tun mehr Zur Nutzung verfügbar. Erfahren Sie mehr über das Umschreiben von URLs in WordPress.

Tatsächlich haben wir die Möglichkeit, URL-Rewrite-Regeln zu erstellen, die genau wie moderne MVC-basierte Frameworks übereinstimmen und durchgesetzt werden.


Umschreibregeln verstehen

Um sicherzustellen, dass wir alle auf dem gleichen Stand sind, stellen Sie sich Rewrite-Regeln als eine Möglichkeit vor, bestimmte Muster mit dem Webserver abzugleichen, um Daten aus der Datenbank abzurufen.

In einer Standard-WordPress-Installation sieht die Standard-Permalink-Struktur beispielsweise so aus:

http://domain.com/?p=123

Diese URL enthält einen Abfragezeichenfolgenparameter, bei dem es sich um ein Schlüssel-Wert-Paar von p=123 handelt, was im Kontext von WordPress „Beitrag mit ID 123 abrufen“ bedeutet.

Wenn Sie sich die Optionen auf dem Bildschirm „Permalink-Einstellungen“ ansehen, werden Ihnen auch verschiedene Optionen angezeigt:

探索用于 Web 应用程序开发的 WordPress 功能:解锁 URL 重写功能Ein weiteres Beispiel für eine Umschreiberegel, die Sie möglicherweise sehen, ist ein sogenannter „hübscher Permalink“ oder, wie er in Ihrem WordPress-Dashboard heißt, ein „Beitragsname“.

In diesem Format sieht die URL so aus:

http://domain.com/post-title/

Von hier aus geht die angeforderte URL an den Webserver, der dann anhand einer Reihe von Regeln die ID des Beitrags mit diesem Titel ermittelt und sie an den anfragenden Client (d. h. den Browser) zurückgibt.

Zwischen diesen beiden Beispielen gibt es ein Grundprinzip, das genau zeigt, was Umschreibungsregeln sind. p>

Kurz gesagt definieren Rewrite-Regeln eine Reihe von Regeln, in denen eingehende URLs in ein Format umgewandelt werden, in dem der Client Informationen aus der Datenbank abruft.

Das wirft natürlich zwei Fragen auf:

Wie werden Rewrite-Regeln generiert?
  1. Vielleicht noch wichtiger: Warum sind sie so kompliziert?
Das Geschäft, Regeln neu zu schreiben

Regeln neu zu schreiben ist eine Herausforderung für Entwickler, da sie auf regulären Ausdrücken basieren. Jamie Zawinski hat ein altes Sprichwort über reguläre Ausdrücke:

Manche Leute denken, wenn sie mit einem Problem konfrontiert werden: „Ich weiß, ich werde reguläre Ausdrücke verwenden.“ Jetzt haben sie zwei Probleme.

Lustig, aber wahr. Aus diesem Grund kann der Umgang mit benutzerdefinierten Rewrite-Regeln in WordPress für viele Entwickler eine Herausforderung sein.

Leider können wir nicht jede Variation oder jeden Typ von URL-Schema demonstrieren, das durch Rewrite-Regeln erstellt oder unterstützt werden kann, aber wir können uns ein paar praktische Beispiele ansehen, die den Einstieg zeigen und eine Grundlage oder Orientierung für die Zukunft bieten muss durchgeführt werden, damit die Anwendung funktioniert.

Umschreibungsregeln aktualisieren

Beachten Sie, dass beim Definieren von Rewrite-Regeln diese nicht sofort wirksam werden, sondern bereits aktualisiert werden. Das bedeutet, dass Sie den alten Regelsatz löschen und durch den neuen Regelsatz ersetzen müssen.

Es gibt zwei Möglichkeiten, dies zu erreichen:

Sie können im Dashboard
    Permalink-Einstellungen
  1. auf Änderungen speichern klicken. Auch wenn eine Option ausgewählt wird, wird alles verwendet, was Sie in der -Datei Ihrer Anwendung definieren. functions.phpSie können anrufen
  2. und das Problem programmgesteuert lösen.
  3. $wp_rewrite->flush_rules();
  4. Egal für welche Route Sie sich entscheiden, es ist wichtig, sich diesen Schritt zu merken, denn jedes Mal, wenn Sie eine neue Umschreibungsregel definieren, müssen Sie die alten Regeln aktualisieren.

Wie funktioniert die Rewrite-API?

Wenn wir tatsächlich unsere eigenen Rewrite-Regeln schreiben, ist es wichtig zu verstehen, wie die Rewrite-API funktioniert.

Es lässt sich in vier Schritte zusammenfassen:

  1. 从网络服务器请求 URL。
  2. 如果请求的网址存在内容,则将返回该内容(可以是图像、字体或其他内容)。
  3. 如果内容不存在,则请求将被定向到 index.php,它将与网址的模式匹配。
  4. 内容随后将从 WordPress 返回到请求客户端。

如果您有兴趣根据固定链接仪表板中的配置查看重写规则的定义,请查看重写规则检查器插件。

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

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

有道理吗?如果没有,让我们看几个简单实用的示例。

重写规则的示例

鉴于我们知道模式将被匹配并传递到 index.php,我们可以利用 add_rewrite_rule 函数来定义自定义 URL 的工作方式。

帖子 ID 的简短标题

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

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

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

function example_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

function example_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”或“bottom”。如果设置为“top”,则该规则将优先于所有其他规则进行评估;但是,如果为“bottom”,则将最后评估。

现在,这些示例都是基本的。这还不足以真正向我们展示如何设置自定义路由,例如我们在本文前面概述的路由。为此,我们需要看一些更复杂的表达式。

导入有关刷新重写规则的注释

但在我们开始这样做之前,需要注意的是,像我们上面所做的那样调用 flush_rewrite_rules() 实际上是一种不好的做法。它在上面的示例中有效,但实际上会减慢网站的加载时间。

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

无论如何,请确保正确挂钩函数,以便重写规则不会在每次加载页面时刷新 - 只要重写规则本身发生更改。


重写规则的更复杂方法

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

  • add_rewrite_tag 会让 WordPress 了解自定义查询字符串变量。这也与下一个函数结合使用。
  • add_rewrite_rule, 如前所述,将允许我们向 WordPress 添加额外的重写规则(以及设置它们的优先级)。

现在假设我们有一个名为个人的自定义帖子类型,它代表应用程序中的某个人。然后,假设个人还具有以下方法和相应的可用网址:

  • all: http://domain.com/individuals/
  • update: http://domain.com/individual/update/1 用于更新第一人称
  • delete: http://domain.com/individual/delete/1 用于删除第一个人

所以这个模式很简单,但是我们如何实现它呢?

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

function example_add_rewrite_rules() {

	// Define the tag for the individual ID
	add_rewrite_tag( '%individual_id%', '([0-9]*)' );

	// Define the rules for each of the individuals
	add_rewrite_rule( '^individual/update/([0-9]*)', 'index.php?individual=update&individual_id=$matches[1]', 'top' );
	add_rewrite_rule( '^individual/delete/([0-9]*)', 'index.php?individual=delete&individual_id=$matches[1]', 'top' );

}
add_action( 'init', 'example_add_rewrite_rules' );

接下来,我们需要为每个人定义这些自定义函数,以便它们在调用时更新数据库中的正确记录。

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

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

function 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' );

function example_update_individual( $input ) {

	/* The incoming $input collection from an assumed form
	 * that will be used to update the user.
	 *
	 * It may include information such as the ID, the first name,
	 * last name, and so on.
	 *
	 * Upon success, use <code>wp_redirect</code> to go back to the homepage,  or reload
	 * the page to show an error.
	 */

}

function example_delete_individual( $individual_id ) {

	/* Use the incoming ID to locate the individual record and remove it
	 * from the database.
	 *
	 * Upon success, use <code>wp_redirect</code> to go back to the homepage,  or reload
	 * the page to show an error.
	 */

}

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 操作中,并且在用户未以管理员身份登录时触发。此外,还可以通过有条件地将其设置为仅在来自某个页面时加载来进一步增强此功能;然而,对于这个例子来说,它达到了它的目的。

接下来,阅读 UpdateDelete 函数的代码注释,了解它们应如何运行。

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

有点不完整

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

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


下一个

说了这么多,现在是时候讨论缓存的概念了。

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

话虽如此,我们接下来将注意力转向 Transients API,以便我们可以自己处理一些本机缓存,并回顾这如何帮助第三方缓存机制使我们的应用程序更快。

Das obige ist der detaillierte Inhalt vonEntdecken Sie WordPress-Funktionen für die Entwicklung von Webanwendungen: Schalten Sie Funktionen zum Umschreiben von URLs frei. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn