WordPress REST API正在更改WordPress。您可能沒有注意到,因為其中很多都在幕後,但是REST API的含義在WordPress的代碼庫和用途方面都對WordPress的未來產生了巨大的影響。
如果您尚未使用WordPress REST API,您可能想知道它到底是什麼。因此,讓我們開始看看REST API是什麼。
什麼是WordPress REST API?
WordPress REST API是開發人員可用於從WordPress安裝本身之外訪問WordPress的介面。您可以使用JavaScript來訪問它,這意味著它可以用於創建互動式網站和應用程序。
只需移至Kinsta,即可將WordPress網站的速度提高200%。
今天免費遷移
REST代表代表性狀態傳輸,API代表應用程序編程介面。讓我們看一下這些含義。
什麼是應用程序編程介面(API)?
應用程序編程介面或API定義為:
「客戶端和伺服器之間的介面或通信協議旨在簡化客戶端軟體的構建。」
如果您不熟悉API,則可能不會有太大幫助。簡而言之,API是允許一個系統與另一個系統交互(或「介面」)的一組代碼。如果您曾經在WordPress網站上添加過Google地圖,則使用過Google Maps API,該API可讓您的WordPress網站與Google Maps交互。
這些系統不需要完全分開。 WordPress已經有多個API,可用於插件,設置和短代碼。插件和主題開發人員可以使用這些工具與WordPress核心進行交互並使事情發生(例如,創建簡碼和向WordPress管理員添加設置屏幕)。
REST API的不同之處在於,它允許WordPress安裝本身之外的系統與WordPress進行交互,而REST是其中的一部分。
什麼是代表性狀態轉移(REST)?
代表性狀態傳輸(REST)提供了Web系統可用於相互介面的標準。沒有REST,兩個系統將無法相互理解,因此無法來回發送數據。
為了使應用程序具有RESTful,它必須符合以下五個原則:
- 統一的界面。用於訪問系統中資源的URL必須是統一的,一致的,並且可以通過通用方法(如GET)(不久以後將有更多方法)訪問。
- 客戶端伺服器。客戶端應用程序和伺服器應用程序必須分開,以便可以彼此獨立地進行開發。如果伺服器端技術(例如WordPress)發生變化,則伺服器端應用程序(例如,應用程序)仍必須能夠通過相同的簡單方法來訪問它。
- 無狀態。使用API發出新請求時,伺服器不會更改狀態。它不存儲已發出的請求。
- 可緩存的。所有資源都必須是可緩存的,以提高速度並符合Web標準。可以在伺服器或客戶端上實現緩存。
- 分層系統。 RESTful系統允許您使用多層來訪問它,並在需要時將數據存儲在中間伺服器中。伺服器無法確定最終客戶端是否直接與其連接。
所有這些限制都與網頁和應用程序有關,並控制應用程序與API交互的方式。
這對WordPress意味著什麼?
將REST和API放在一起意味著WordPress REST API是一組旨在使其他系統與WordPress交互的代碼,並且其構建方式可確保這些系統相互理解。
例如,這意味著第三方網站或移動應用程序可以訪問WordPress資料庫,從中獲取數據並向其中添加數據。
但是,有許多含義和用途。
了解WordPress REST API
WordPress REST API的開發是為了響應網站和應用程序開發方式的變化以及對更廣泛地開放WordPress的需求。
WordPress REST API的背景
WordPress REST API於2016年12月作為4.7版核心的一部分發布,但在此之前它是一個插件。
它旨在支持一系列基於WordPress的應用程序,並將WordPress從內容管理系統轉變為應用程序平台。
WordPress.com廣泛使用了該工具,其基於JavaScript的界面使用REST API與WordPress資料庫進行交互。古騰堡(Gutenberg)編輯界面也使用了該功能,該界面已成為2019年核心功能的一部分。
REST API擴大了WordPress可用於的應用程序範圍。內容管理系統擅長運行複雜的網站,但應用程序平台也可以用於驅動基於Web的單頁應用程序或SPA(如果您曾經使用過Google文檔,則使用其中之一)。
在這些方法中,當用戶採取措施時將刷新內容,而不是載入新頁面。由於它使用JavaScript(一種客戶端語言)而不是PHP(一種伺服器端語言),因此它可以使事情發生在用戶的瀏覽器中,而不必不斷向伺服器發送請求。
對WordPress用戶和開發人員的影響
如果您是使用WordPress的用戶和/或開發人員,那麼REST API會帶來很多影響。
對於用戶,這些包括:
- 界面更改,包括古騰堡(Gutenberg)編輯器。
- WordPress移動應用程序的更改和改進。
- 隨著時間的推移,自託管的WordPress管理屏幕看起來更像WordPress.com屏幕。
對於開發人員來說,存在更廣泛的含義和可能性:
- 使用REST API創建SPA的功能,可以從WordPress提取數據,但外觀與WordPress卻大不相同。
- 能夠將WordPress與其他前端技術和系統集成。
- 如果您是不編寫PHP的前端開發人員,則可以使用WordPress進行開發。
- 對於PHP開發人員,越來越需要擴展您的技能以包括JavaScript。
- 特定的更改,例如需要在頁面和後期編輯屏幕中構建古騰堡塊而不是元框。
隨著時間的流逝,WordPress REST API將意味著更多的WordPress核心將使用JavaScript而不是PHP編寫。如果您是WordPress開發人員,則意味著您需要學習JavaScript。
如何訪問WordPress REST API
您如何訪問WordPress REST API?
要訪問WP-REST API,您需要通過命令行訪問您的網站。使用WordPress,這稱為WP-CLI。您無需通過管理屏幕或直接訪問網站上的代碼來執行任何操作。
讓我們來看看如何開始。
通過WP-CLI訪問WP-REST
WP-CLI是WordPress命令行界面。它使您可以通過計算機上的命令行界面(CLI)訪問和使用WordPress。 WP-CLI已預安裝所有Kinsta託管計劃。
要訪問CLI,請在Mac或Linux上打開「終端」,在Windows中打開「命令提示符」。
要訪問遠程站點,您需要SSH到伺服器以通過WP-CLI訪問它。
要訪問本地站點,您只需要從命令行使用正確的目錄結構即可。在實際網站上嘗試REST API之前,最好先在本地測試網站上進行試驗。
您需要專門訪問您網站的REST API,如下所示:
yoursite.com/wp/v2
然後,您可以在此之後添加元素以訪問某些類型的數據,稍後我們將對其進行詳細介紹。這些元素稱為端點。
認證方式
訪問網站後,您可能需要進行身份驗證。一些端點是公共的,不需要身份驗證,而其他端點則需要。
您無需在此處登錄站點管理員:REST API的功能有所不同。
為了能夠通過WP-CLI對您的網站進行身份驗證,您需要安裝身份驗證插件。對於開發安裝,Basic Auth插件可以完成工作,並且很容易使用。
但是,對於實時站點,您應該使用更可靠的身份驗證形式,例如JWT Authentication插件,該插件使用JSON Web令牌並且更安全。
信息
儘管Kinsta本身不支持OAuth,但Enterprise及以上計劃可以要求將其實現。
然後,您可以使用命令行來訪問數據並包括身份驗證。
下面的示例使用curl測試與WordPress的連接。它將輸出草稿列表。
curl -X GET-用戶名:密碼-i http://yoursite.com/wp/v2/posts?status=draft
草稿帖子不是公開信息,因此您需要進行身份驗證才能訪問它們。但是,如果您要查找公開的數據,則不需要身份驗證。因此,要檢索已發布的帖子列表,可以使用:
curl -X GET http://yoursite.com/wp/v2/posts
這將獲取所有已發布的帖子,因為這些帖子是公開的。
WordPress REST API命令概述
訪問網站後,您知道如何使用身份驗證(以及是否需要使用身份驗證),則需要使用一系列命令之一來與您的網站進行交互。
您需要使用的命令是:
-
GET檢索資源,例如帖子或其他數據。
-
POST將資源添加到伺服器,例如發布,附件或其他資源。
-
PUT可用於編輯或更新伺服器上已經存在的資源。
-
DELETE從伺服器中刪除資源。小心使用!
讓我們依次看一看。
得到
GET命令可能是最常用的:它檢索數據。下面的示例將獲取您站點中所有已發布頁面的列表:
GET / wp / v2 / posts /?status = published
請注意,由於您已經使用WP-CLI訪問網站的完整路徑,因此我沒有在上一行中包含該網站的完整路徑。
檢索到數據後,您可以使用它來告知下一步。您可以刪除這些帖子之一,對其進行編輯或更新。您可以簡單地將帖子輸出到您的Web應用程序。
假設您想獲取最新信息。您將使用以下方法:
GET / wp / v2 / posts /?per_page = 1
處理帖子時,可以使用許多參數。有關更多信息,請參見WordPress REST API手冊。
開機自檢
使用POST將新數據或資源添加到您的站點。
因此,例如,如果要創建帖子,則可以使用POST命令開始:
開機自檢/ wp / v2 / posts /
這將創建一個新的空草稿。
然後,您可以通過使用PUT命令進行編輯來更新帖子。
使用POST命令,您還可以添加帖子以外的其他資源,包括附件和其他帖子類型。
要將頁面添加到您的站點,您可以使用以下方法:
POST / wp / v2 /帖子/頁面
這將以與創建空白帖子相同的方式創建一個空白頁面。
放
使用PUT命令可以編輯現有資源,包括帖子。
假設您的網站上有許多草稿。您想檢查它們並更新其中一個使其發布。
您可以首先獲取所有草稿列表:
POST / wp / v2 / posts /?status =「草稿」
系統將為您提供所有當前草稿的列表。您可以使用其ID更改其中之一的狀態:
PUT / wp / v2 / posts / 567
這將訪問該帖子,並允許您對其進行編輯。然後,您可以使用status參數更改其狀態:
{
「 status」 =「發布」
}
或者,您可以在帖子中添加內容並發布:
{
「 status」 =「發布」
「 content」 =「這裡的內容」
}
伺服器將返回200-OK狀態,告訴您PUT請求已成功編輯帖子。
刪除
DELETE命令執行您期望的操作:它刪除資源。默認情況下,如果使用它刪除帖子,則會將其放入垃圾箱,而不是永久刪除。
因此,如果您想將剛創建的帖子移到回收站,則可以使用以下命令:
刪除/ wp / v2 / posts / 567
但是,如果要繞過垃圾箱並將其永久刪除,則可以使用force參數:
刪除/ wp / v2 / posts / 567?force = true
這將永久刪除該帖子,沒有撤消選項,因此應謹慎使用。
何時不使用WordPress REST API
WordPress REST API並非始終是開發網站或應用的正確方法。在將其用於開發之前,應注意以下幾點注意事項:
兼容性
如果您的應用要在未運行JavaScript的設備上使用或可能會被關閉的用戶使用,那麼如果您使用的是REST API,則該應用將無法運行。
用PHP編碼的WordPress網站將輸出HTML,因此不會出現此問題。不使用JavaScript的設備越來越少,但是如果您專門針對這些設備進行開發,則REST API將無法使用。
同樣,如果您的用戶可能會關閉JavaScript,則使用REST API會引起問題。出於可訪問性或安全性原因,一些用戶在其瀏覽器中關閉了JavaScript。
輔助功能
使用JavaScript開發的網站或應用並不總是可以像HTML中那樣訪問。
這主要是因為使用JavaScript傳遞動態內容的方式可能無法在屏幕閱讀器上很好地播放,並且可能給視力障礙或光敏性癲癇患者帶來麻煩。
使用REST API來訪問您的WordPress網站並以一種易於訪問的形式輸出數據意味著您可以克服這些問題,但是在開發網站時值得檢查您網站的可訪問性。
搜索引擎優化
單頁應用程序經常刷新,有時可能會導致SEO問題。這是因為搜索引擎可能不會為首次輸出頁面時未交付的內容編製索引。
Google和其他搜索引擎正在追趕一個事實,即許多網站現在都具有SPA功能,並且正在對其進行適當索引。但是,確實值得對使用REST API開發的任何網站進行全面的SEO審核。
如何禁用WordPress REST API
如果您不希望應用程序能夠使用REST API訪問您網站中的數據,則可以將其禁用。請記住,任何人都可以訪問公共數據,而不僅僅是您自己。
為此,您可以安裝Disable WP REST API插件。這會為未登錄您網站的任何用戶禁用REST API。
另外,您可以在主題的功能文件中添加一些代碼,也可以編寫自己的插件。最好編寫一個插件,因為它不是特定於主題的功能。
在您的插件中,僅添加兩行:
add_filter('json_enabled','__return_false');
add_filter('json_jsonp_enabled','__return_false');
這將完全禁用您站點的REST API。它可能會對您的管理屏幕產生連鎖反應,因此請確保添加後一切正常。
使用WordPress REST API的實際應用程序
REST API為WordPress的未來提供了一些令人興奮的可能性。以下是一些使用WordPress REST API創建SPA或將WordPress鏈接到其他站點和技術的應用程序和站點的示例。
WordPress.com
WordPress.com管理員屏幕完全使用REST API構建,以提供與用戶進行交互以管理其網站的SPA。
這樣可以在界面和伺服器之間進行動態通信,併產生一個用戶友好的界面,WordPress.org可能會及時模仿。
塊編輯器(Gutenberg)
同樣在WordPress管理屏幕中,但這次也是在自託管WordPress中,Gutenberg塊編輯器利用REST API與您的資料庫進行通信並創建塊。
為了使帖子類型能夠與Gutenberg編輯器一起使用,它們必須啟用REST API。這意味著,如果您要註冊自定義帖子類型並使用Gutenberg,則需要添加以下行以啟用該帖子類型的塊編輯器:
「 show_in_rest」 = true;
特濃咖啡
Event Espresso是一個WordPress插件,可讓用戶組織和發布事件。它利用REST API,以便用戶可以從WordPress外部從中訪問數據。這意味著您可以構建移動應用程序或SPA來管理事件。
我們兩個
我們兩個
UsTwo是一家數字代理商,其網站是使用REST API作為單頁應用程序構建的。這結合了使用React構建的前端和由WordPress驅動的後端。
他們單個頁面的內容是模塊化的,其結構與標準WordPress頁面不同。為了使這項工作有效,他們使用了自定義頁面構建器插件,該插件使他們的團隊可以將模塊化內容添加到站點。
今日美國
《今日美國》的網站是使用WordPress REST API與網站中現有系統和模塊的集成來重建的。
REST API允許使用JSON將網站的內容推送到其他渠道,例如Facebook Instant Articles和Apple News。他們還為體育部分編寫了一個在線社交遊戲,該遊戲使用JavaScript構建。
WordPress REST API在WordPress生態系統中打開了很多機會。通過此深入指南,了解如何從中獲得最大收益! ?⚙️
點擊鳴叫
摘要
WordPress REST API給WordPress用戶和開發人員帶來了一些激動人心的挑戰,同時也帶來了有趣的機會。這是WordPress的未來,可能會從根本上改變我們使用WordPress開發的方式以及我們使用它的方式。
您對REST API有何看法?您是否將其用於某些項目?在下面的評論部分告訴我們!
11分享
- 9
- 0
- 0
- 2
- 0
- 0
- 0
- 0
.essb_links .essb_links_list li a {
margin-top:0px;
}
@media only屏幕和(最小寬度:64em){
.container–narrow.pb–60,
.knowledgebase .user-content {
職位:相對
}
.widget-share {
位置:絕對;
左:-200px;
頂部:0px;
高度:100%;
寬度:200像素;
框大小:border-box;
}
.widget-share-aligner {
寬度:200像素;
padding-right:62px;
框大小:border-box;
}
html(lang =「 nl」).widget-share-aligner {
寬度:210像素;
}
.widget-share-inner {
padding-bottom:62px;
}
.knowledgebase .user-content .widget-share-inner {
padding-top:0;
}
.widget-share .amount {
顯示:flex;
align-items:居中;
證明內容:flex-end;
寬度:100%;
右邊距:11px;
font-size:14px;
font-weight:500;
底邊距:10px;
}
.widget-share .amount svg {
右邊距:8px;
margin-left:10px;
}
.essb_links .essb_links_list {
flex-direction:列;
align-items:flex-end;
}
.essb_links .essb_links_list li {
顯示:塊;
margin-bottom:5px!important;
}
.widget-share__total {
margin-bottom:0px!重要;
}
.widget-share__total .heading–small {
顏色:#999999;
font-size:14px;
字體粗細:300;
}
.essb-total-value {
margin-right:4px;
}
}
.essb_links {
保證金:0px;
填充:0px;
}
.essb_counter_right {
顯示:無!重要;
}
.essb_links.essb_template_circles-retina .essb_link_hackernews一個,
.essb_links.essb_template_circles-retina .essb_link_reddit a,
.essb_links.essb_template_circles-retina .essb_link_mail a,
.essb_links.essb_template_circles-retina .essb_link_mwp一個,
.essb_links.essb_template_circles-retina .essb_link_buffer a,
.essb_links.essb_template_circles-retina .essb_link_linkedin a,
.essb_links.essb_template_circles-retina .essb_link_facebook a,
.essb_links.essb_template_circles-retina .essb_link_twitter a
{
顏色:#43414e!important;
背景:#f3f3f6!important;
}
.essb_links.essb_template_circles-retina li a:focus,.essb_links.essb_template_circles-retina li a:hover {
border-color:#fff!important;
背景:#43414e!重要;
}
.essb_links.essb_template_circles-retina a {
border-color:#f3f3f6!important;
背景:#f3f3f6;
}
.essb_links .essb_icon:之前{
font-size:15px!important;
頂部:8px;
左:9px;
}
.essb_links .essb_icon {
寬度:32px;
高度:32px;
}
.essb_links.essb_counter_modern_right .essb_counter_right {
背景:#f3f3f6!important;
}
@media only屏幕和(最大寬度:63.999em){
.widget-share-aligner {
位置:相對!重要;
top:0!重要;
}
.essb_links .essb_links_list li {
margin-right:8px!important;
}
}