問題描述

我有一個擁有 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。