在WordPress中使用外部API?

时间:2011-09-11 作者:tahir

我有一个客户有一个WordPress网站,他想扩展它以添加新功能。这些功能包含在我已经完成的网站中(一种数据库上的搜索引擎,带有一些过滤器),并且正在进行新的增强。

我计划做的是为我的网站创建一个json api(所有搜索功能都在我的数据库上),并让wordpress网站使用这个api,然后我只需要创建视图来显示搜索结果。

问题是我根本不懂WordPress(对我来说,这是一种可以通过管理面板添加文章的东西…)我不知道如何在其中编写自己的服务器端代码。我在谷歌上搜索了一下,找到了一个叫做“插件”的东西,但我想知道是否有可能这样做,这是否是最简单的方法,因为我不需要任何其他第三方使用代码。如果有可能破解WordPress安装来添加我的PHP文件,编写我需要的代码(我的视图使用相同的WordPress css),这会更简单,但我不知道是否有可能?

4 个回复
最合适的回答,由SO网友:Jan Fabry 整理而成

关于WordPress开发的简短入门,可能会对您有所帮助,也可能会让您感到困惑:

要记住的主要一点是:这一切都只是PHP。另外:不要编辑WordPress的核心文件,因为以后更新到新版本时会遇到麻烦。您应该编辑的唯一代码是插件和主题的代码。

如果只需要向现有页面添加一些内容,只需编辑正确的主题文件即可。但是,如果您需要执行一些高级操作(并且在特定URL添加额外的“视图”在WordPress中更高级),那么您需要在WordPress引导过程中较早加载的位置添加代码。

原因是WordPress总是根据URL为您进行post查询。你去的地方/category/banana/, 将查询类别的帖子banana 并加载正确的模板文件,只需在其中循环并显示它们。然而,如果你去/custom-view/, WordPress可能找不到任何帖子,也无法加载404模板,因此无法轻松恢复!

有些人通过创建“存根页”来解决这个问题:他们在WordPress中创建一个内容不重要的页面,只有模板:在那里他们可以做任何他们想做的事情。这有点老套,但很管用。干净的方法是定义额外的重写规则,让WordPress知道/custom-view/ 是一个有效的URL,但应该发生其他事情。

如果你想这样做,你需要连接到核心WordPress系统。这里重要的部分是挂钩,而不是修改。WordPress具有动作和过滤器。行动只是一个声明(“嘿,我们目前正在编写<head> 标签您还想添加什么吗?“)。筛选器允许您修改变量(”这是文章标题。如果要修改它,请返回一个新值“)。当然,现在的诀窍是知道应该使用哪些操作和筛选器。这取决于您选择的方式(存根页或新的重写规则),因此我在这里不详细介绍。

您可以定义要在插件文件或函数中使用的操作和过滤器。主题的php文件。他们在这方面很特别they are loaded while WordPress is booting, 所以在执行主查询之前等等。插件文件只是一个PHP文件,放在wp-content/plugins/ 目录,带有一个特殊的标题,WordPress可以读取其名称并将其显示在管理区域中,您可以在其中启用和禁用它(因此您可以将插件保留在目录中,但暂时禁用它)。

SO网友:kaiser

基本知识

您必须了解插件和主题的基本知识。简而言之:它们是wordpress核心功能的补充。正常地"Plugins" 更多关于功能和"Themes" 更多关于“视图”。您可能还想了解一下"Plugin API".

JSON您可能需要使用json2 内置到core中以提供“安全”API的脚本。

JSON示例,其余部分如下:

$response = json_encode( array( 
     \'data\' => $your_output 
) );
header( "Content-Type: application/json" );
echo $response;
《法典》还对"XML Rpc".

Http API另一种可能是http requests. 请务必阅读链接底部的参考资料。

这是额外的,因为它更多的是提供一个可消费的API。解释here. 还有一个插件名为HookPress 这就是你的工作。Some slides 也来自作者。

SO网友:Rarst

我想你知道PHP?或者这也是障碍?

WordPress中的插件本质上是如何打包PHP代码的约定,以便WordPress核心能够识别和处理PHP代码。它是格式,而不是功能。

至于实际功能,您几乎可以运行任意的PHP,但为了兼容性和可靠性,最好使用WP的API。

将WP上下文中的代码想象为include (从技术上讲是这样的)。从这里开始,您的需求和资源范围将决定有多少内容将被重写为特定于WordPress。

SO网友:Itai Sagi

是的,这是可能的。

大多数插件都是通过所谓的挂钩创建的:

例如:

add_action("hook", "function")
一旦你知道这个框架是如何工作的,那么就很容易为自己构建一个插件。。。作品我建议你用它来充实自己,最广泛的知识领域(虽然不是像php.net那样组织最严密的领域)是wordpress codex.

结束