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