问题描述

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

我打算做的是创建一个我的网站的 json api(所有的搜索功能在我的数据库中),并使 wordpress 网站消费这个 api,然后我只需要创建视图来显示搜索结果。

问题是我根本不知道 WordPress(对于我来说,你可以通过管理面板添加文章…),而且我不知道我们如何编写我们自己的服务器端代码。我在 Google 上搜索过,并发现了一些名为”plugin” 的东西,但是我想知道是否可以这样做,如果是最简单的方法,我不需要使用任何其他第三方的代码。如果有可能骇客 WordPress 安装来添加我的 PHP 文件,代码我需要的 (我的看法与同样的 WordPress css) 它会更简单,但我不知道是否可能?

最佳解决方案

WordPress 开发的简短介绍可能有助于或可能使您感到困惑:

要记住的主要事情:这只是 PHP 。还有:不要编辑 WordPress 的核心文件,因为以后更新到较新版本时会遇到麻烦。你应该编辑的唯一代码是插件和主题。

如果您只需要向现有页面添加内容,则可能会编辑正确的主题文件。但是,如果您需要执行某些高级功能 (并且添加一个额外的”view”,就像在特定 URL 中,在 WordPress 中更高级),则需要将代码添加到 WordPress 引导过程之前的一个位置。

这样做的原因是 WordPress 始终根据 URL 为您发送一个后期查询。你去/category/banana/,它会查询类别 banana 的帖子,并加载正确的模板文件,你只需要循环并显示它们。但是,如果你去/custom-view/,WordPress 可能找不到任何帖子并加载 404 模板 – 给你没有简单的方法来恢复!

有些人通过创建”stub pages” 来解决这个问题:他们在 WordPress 中创建一个页面,其中内容不重要,只有模板是:他们做任何他们想要做的任何花哨的事情。这是黑客,但它的作品。干净的方法是定义额外的重写规则,让 WordPress 知道/custom-view/是一个有效的 URL,但其他的应该发生在那里。

如果你想这样做,你需要钩住核心的 WordPress 系统。这里的重要部分是钩入,不修改。 WordPress 有动作和过滤器。一个动作只是一个公告 (“嘿,我们正在编写<head> 标签,你还要添加任何东西吗?”) 。过滤器允许您修改变量 (“这是标题,如果要修改它,返回一个新值”) 。当然,现在的诀窍就是知道你应该使用哪些动作和过滤器。这取决于你选择的方式 (存根页面或新的重写规则),所以我不会在这里详细介绍。

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

次佳解决方案

Basics

你必须了解插件和主题的基础知识。简而言之:它们是 wordpress 核心功能的补充。通常“Plugins” 更多关于功能,“Themes” 更多关于”view” 。您可能还想阅读有关“Plugin API” 的一些内容。

JSON

您可能希望使用内核内置的 json2 脚本来提供”safe” API 。

JSON 示例

其余的就是这样的:

$response = json_encode( array( 
     'data' => $your_output 
) );
header( "Content-Type: application/json" );
echo $response;

XML Rpc

食典也有一些关于“XML Rpc” 的东西。

Http API

另一种可能性可能是 http requests 。确保您阅读链接底部的引用。


Webhooks

这是额外的,因为它更多的是提供可消耗的 API 。说明 here 。还有一个名为 HookPress 的插件可以为您做这项工作。 Some slides 从作者以及。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。