在WordPress中使用外部API?


9

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

我计划要做的是创建网站的json api(所有搜索功能都在数据库中),并使wordpress网站使用此api,然后只需要创建视图即可显示搜索结果。

问题是我完全不了解WordPress(对我来说,您可以在其中通过管理面板添加文章...),而且我不知道我们如何在其中编写自己的服务器端代码。我已经在Google上进行搜索,发现了一个名为“插件”的东西,但我想知道是否可以这样做,并且这是否是最简单的方法,因为我不需要其他任何人使用的代码派对。如果可以破解WordPress的安装来添加我的PHP文件,对我需要的代码进行编码(我的视图具有相同的WordPress CSS),这会更简单,但我不知道是否可能?


您到底想做什么,将word feed读入wordpress,将数据插入数据库,通过XML-RPC发布,请尝试并更加清楚。
Wyck

阅读json feed。例如,wordpress网站应该包含一个搜索表单,提交时,它将执行对api的get调用,该api将返回json中的对象,我应该将这些结果输出到wordpress网站的页面上
tahir

1
@tahir我正在尝试做这件事。您是否可以分享实现目标的方式?
SAHM 2014年

Answers:


9

WordPress开发的简短入门可能会帮助您或使您感到困惑:

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

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

这样做的原因是WordPress总是根据URL为您进行后期查询。转到/category/banana/,它将查询类别的帖子,banana并加载正确的模板文件,您只需在其中循环并显示它们即可。但是,如果您访问/custom-view/,WordPress可能将找不到任何帖子并加载404模板-从而使您无法轻松恢复!

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

如果要做到这一点,你需要挂接到核心的WordPress系统。这里的重要部分是挂钩,而不是修改。WordPress具有操作过滤器。一个动作只是一个公告(“嘿,我们正在写<head>标签。您也要添加吗?”)。过滤器允许您修改变量(“这是帖子标题。如果要修改它,请返回一个新值”)。当然,现在的诀窍是知道应该使用哪些操作和过滤器。这取决于您选择的方式(存根页面或新的重写规则),因此在此不再赘述。

您可以在主题的插件文件或functions.php文件中定义要使用的操作和过滤器。它们的特殊之处在于它们是在WordPress引导时加载的,因此是在执行主查询之前加载的,依此类推。插件文件只是一个PHP文件,位于wp-content/plugins/目录中,带有一个特殊的标头,因此WordPress可以读取其名称并将其显示在可以启用和禁用它的管理区域中(因此您可以将插件保留在目录中,但可以暂时使用)禁用它)。


2

基本

您必须了解插件和主题的基础知识。简而言之:它们是对wordpress核心功能的补充。通常,“插件”更多是关于功能,“主题”更多是关于“视图”。您可能还需要阅读一些有关“插件API”的信息

JSON格式

您可能要使用核心内置的json2脚本来提供“安全” API。

JSON范例

其余的将是这样的:

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

XML Rpc

食典也有一些关于“ XML Rpc”的内容

Http API

另一种可能是http请求。确保已阅读链接底部的参考。


网络挂钩

这是附加的,因为更多是关于提供可使用的API。在这里解释。还有一个名为HookPress的插件可以为您完成这项工作。作者的一些幻灯片


1

我假设您确实了解PHP?还是那也是障碍?

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

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

将您在WP上下文中的代码视为include(从技术角度而言)。从那里开始,您的需求和资源的范围将决定要重写多少以特定于WordPress。


0

是的,有可能。

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

例如:

add_action("hook", "function")

一旦您知道该框架的工作原理,就很容易构建自己的插件,...如何工作...我建议您使用它进行农作,这是最广泛的知识场所(尽管不是最有条理的-像php。)。 net)是wordpress Codex

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.