我如何确定将使用哪个文件/函数来响应特定URL?

时间:2011-08-04 作者:Andy

我是一个Drupalista,偶尔在WordPress中工作,所以这可能很明显:)我在帮助一位同事调试一些AJAX行为,并且从Firebug获得了回调的URL,我不知道如何将其转换为文件和函数服务器端。有人能开导吗?!TIA公司

2 个回复
SO网友:Otto

可湿性粉剂并不是这样工作的。WP如何工作是一个漫长而复杂的讨论,但这里有一个简短的版本。

(顺便说一句,AJAX完全是另一回事。WP中有一个完整的系统,只是为了方便地处理AJAX请求,大多数人都做得不对。如果你的问题是针对AJAX的,以下任何一个都不适用。)

首先要了解的是重写系统。WordPress使用一个名为WP\\u Rewrite的类,该类本质上实现了类似于在中执行的重写规则。htaccess文件。它使用正则表达式将“漂亮的”URL转换为查询变量。

例如http://example.com/author/otto 将转换为http://example.com/index.php?author_name=otto 内部。同样地,http://example.com/2011/08/04 将转换为http://example.com/index.php?year=2011&monthnum=08&day=04.

有一组相当大的规则(50+以上)是为处理这些URL案例而生成的,这些规则实际上是什么很大程度上取决于您的设置、您使用的自定义帖子类型等。此外,主题和插件等也可以调整它们。

这些查询变量在WP\\U查询系统中进行了标准化和命名,该系统控制在数据库中查询的内容。因此,年/月/日的内容被读取并转换为$wp\\u query->年和$wp\\u query->月,依此类推。这是基于白名单系统的,因此必须事先通过核心代码或插件/主题来定义变量。

无论如何,主WP\\U查询由WP\\U重写系统初始化和填充。当查询运行时,它根据设置的变量确定从数据库中提取的内容。它设置了一组标志,例如is\\u author和is\\u archive、is\\u home和is\\u single和similor,以表示各种类型的事物。广义上,这些用于定义Template Hierarchy.

完成此操作后,将调用模板加载器来确定要显示的主题部分。使用这些is\\*规则和一系列模板确定函数,选择主题的一个模板文件,然后调用它来显示页面。模板应该实现一个名为The Loop, 这基本上是从$wp\\U查询全局中提取帖子,并根据它的意愿正确显示它们。

因此,这实际上不是文件和函数的问题,而是基于变量输入的过程的问题。所有对WordPress的调用基本上都采用相同的事件序列:

URL被解析为查询变量通常,如果要更改现有页面上的内容,可以更改主题中的适当文件(或根据主题层次结构创建一个新文件),也可以创建一个新的“类型”内容(例如自定义帖子类型),它可以自动调整查询变量并适当重写规则,或者,如果您正在做一些完全自定义的事情,那么您可以自己做,并直接修改重写规则。

关键是,为了以最简单的方式修改内容,您必须真正停止考虑将URL连接到函数,而是开始考虑“我使用的是什么类型的东西,我希望它们实际做什么,以及我希望它们如何在系统中生存?”

更具体的问题会得到更具体的答案。:)

SO网友:Milo

问题是,许多人以自己的方式使用ajax,而不是使用WordPress提供的ajax。

如果以正确的WordPress方式完成,js将调用/wp-admin/admin-ajax.php 通过ajaxurl变量并传递action, 将映射到add_action(\'wp_ajax_{$action}\', \'some_function\'); 主题功能的某个地方。php或插件,它将调用some_function 当动作匹配时。

结束

相关推荐

Changing attachment urls?

如何更改附件页URL的格式/[post-url]/[attachment-name]/ 到/media/[attachment-name]/? 我知道我可以覆盖get_attachment_link 通过attachment_link 过滤器,但我想我需要更改重定向结构,以便WordPress知道如何处理这些URL?