REST API包含一個JavaScript / Backbone客戶端庫。
該庫為WP REST API提供了一個界面,為所有展現API模式的端點提供了骨干模型和集合。
##使用
激活WP-API插件。 直接排隊腳本:
```
wp_enqueue_script( 'wp-api' );
```
或作為腳本的依賴:
```
wp_enqueue_script( 'my_script', 'path/to/my/script', array( 'wp-api' ) );
```
庫解析根端點(“Schema”)并創建匹配的Backbone模型和集合。 你現在可以有兩個根對象:`wp.api.models`和`wp.api.collections`。
模型和收藏包括:
模型:
* Category
* Comment
* Media
* Page
* PageMeta
* PageRevision
* Post
* PostMeta
* PostRevision
* Schema
* Status
* Tag
* Taxonomy
* Type
* User
Collections:
* Categories
* Comments
* Media
* PageMeta
* PageRevisions
* Pages
* Posts
* Statuses
* Tags
* Taxonomies
* Types
* Users
您可以使用這些端點來使用標準的Backbone方法來讀取,更新,創建和刪除項目(獲取,同步,保存和銷毀模型,同步收集)。 您還可以擴展這些對象,使其成為您自己的,并在其上構建您的視圖。
## Default values
每個模型和集合都包含對其默認值的引用,例如:
wp.api.models.Post.prototype.args
* author: null
* comment_status: null
* content: null
* date: null
* date_gmt: null
* excerpt: null
* featured_image: null
* format: null
* modified: null
* modified_gmt: null
* password: null
* ping_status: null
* slug: null
* status: null
* sticky: null
* title: null
## 可用的方法
每個模型和集合都包含相應端點支持的方法列表。 例如,從`wp.api.models.Post`創建的模型有一個方法數組:
```
["GET", "POST", "PUT", "PATCH", "DELETE"]
```
## 接受的選項
每個模型和集合包含相應端點接受的選項列表(注意,在創建模型或集合時,選項作為第二個參數傳遞),例如:
```
wp.api.collections.Posts.prototype.options
* author
* context
* filter
* order
* orderby
* page
* per_page
* search
* status
```
## 本地化API模式
客戶端將接受并使用本地化模式作為“wpApiSettings”對象的一部分。 默認情況下,模式目前不會傳遞; 而是客戶端向API加載ajax請求以加載模式,然后將其緩存到瀏覽器的會話存儲中(如果可用)。 啟用啟用了“SCRIPT_DEBUG”的client-js插件使用本地化的模式。 檢查[client-js示例](https://github.com/WP-API/client-js/blob/master/client-js.php)或者這個分支,它試圖只將每個客戶端的模式本地化一次。 (https://github.com/WP-API/client-js/compare/features/only-localize-schma-once?expand=1)。
## 等待客戶端加載
客戶端啟動是異步的。 如果api模式是本地化的,客戶端可以立即啟動; 如果客戶端不是ajax請求來加載模式。 客戶端公開了一個負擔承諾,提供可靠的等待,等待客戶端準備好:
```
wp.api.loadPromise.done( function() {
//... use the client here
} )
```
## 模型示例:
要創建一個帖子并修改其類別,請確保您已登錄,然后:
```
// Create a new post
var post = new wp.api.models.Post( { title: 'This is a test post' } );
post.save();
// Load an existing post
var post = new wp.api.models.Post( { id: 1 } );
post.fetch();
// Get a collection of the post's categories (returns a promise)
// Uses _embedded data if available, in which case promise resolves immediately.
post.getCategories().done( function( postCategories ) {
// ... do something with the categories.
// The new post has an single Category: Uncategorized
console.log( postCategories[0].name );
// response -> "Uncategorized"
} );
// Get a posts author User model.
post.getAuthorUser().done( function( user ){
// ... do something with user
console.log( user.get( 'name' ) );
} );
// Get a posts featured image Media model.
post.getFeaturedImage().done( function( image ){
// ... do something with image
console.log( image );
} );
// Set the post categories.
post.setCategories( [ 'apples', 'oranges' ] );
// Get all the categories
var allCategories = new wp.api.collections.Categories()
allCategories.fetch();
var appleCategory = allCategories.findWhere( { slug: 'apples' } );
// Add the category to the postCategories collection we previously fetched.
appleCategory.set( 'parent_post', post.get( 'id' ) );
// Use the POST method so Backbone will not PUT it even though it has an id.
postCategories.create( appleCategory.toJSON(), { type: 'POST' } );
// Remove the Uncategorized category
postCategories.at( 0 ).destroy();
// Check the results - re-fetch
postCategories = post.getCategories();
postCategories.at( 0 ).get( 'name' );
// response -> "apples"
```
## 集合示例:
得到最后10個帖子:
```
var postsCollection = new wp.api.collections.Posts();
postsCollection.fetch();
```
獲取最后25個帖子:
```
postsCollection.fetch( { data: { per_page: 25 } } );
```
使用過濾器更改訂單和orderby選項:
```
postsCollection.fetch( { data: { 'filter': { 'orderby': 'title', 'order': 'ASC' } } } );
```
所有收藏都自動支持分頁,您可以使用`more`獲得下一頁結果:
```
postsCollection.more();
```
獲取一個集合的第5頁:
```
posts.fetch( { data: { page: 5 } } );
```
檢查收集是否有更多的帖子:
```
posts.hasMore();
```
## 使用修訂
您可以使用PostRevisions或PageRevisions集合或通過Post或頁面集合訪問帖子或頁面修訂。
例如,要獲取所有版本的帖子ID 1的集合:
```
var revisions = new wp.api.collections.PostRevisions({}, { parent: 1 });
```
修訂集合也可以通過父母的收藏進行訪問。 這個例子使得2個HTTP請求而不是一個HTTP請求,但現在可以使用原始帖子及其修訂版本:
```
var post = new wp.api.models.Post( { id: 1 } );
post.fetch();
post.getRevisions().done( function( revisions ){
console.log( revisions );
});
```
如果您將自定義端點添加到api,它們也將作為模型/集合使用。 例如,當您[為您的自定義帖子類型添加REST API支持](http://v2.wp-api.org/extending/custom-content-types/)時,您將獲得新的模型和集合。 注意:由于模式存儲在用戶的會話緩存中以避免重新獲取,因此您可能需要打開一個新的選項卡才能對Schema進行新的讀取。
- 簡介
- 主題開發
- WordPress許可證
- 什么是主題
- 開發環境
- 主題開發示例
- 主題基礎
- 模板文件
- 主樣式表(style.css)
- 文章類型
- 規劃主題文件
- 模板層級
- 模板標簽
- 循環
- 主題函數
- 連接主題文件和目錄
- 使用CSS和JavaScript
- 條件標簽
- 類別,標簽和自定義分類
- 模板文件
- 內容模板文件
- 頁面模板文件
- 附件模板文件
- 自定義內容類型
- 部分和其他模板文件
- 評論模板
- 分類模板
- 404頁面
- 主題功能
- 核心支持的功能
- 管理菜單
- 自定義Headers
- 自定義Logo
- 文章格式
- 置頂文章
- Sidebars
- Widgets
- 導航菜單
- 分頁
- 媒體
- Audio
- Images
- Galleries
- Video
- 精選圖片和縮略圖
- 國際化
- 本地化
- 輔助功能
- 主題選項 – 自定義API
- 定制對象
- 改進用戶體驗的工具
- 定制JavaScript API
- JavaScript / Underscore.js渲染的自定義控件
- 高級用法
- 主題安全
- 數據消毒/逃避
- 數據驗證
- 使用隨機數
- 常見漏洞
- 高級主題
- 子主題
- UI最佳實踐
- JavaScript最佳做法
- 主題單元測試
- 驗證你的主題
- Plugin API Hooks
- 發布你的主題
- 所需的主題文件
- 測試
- 主題評論指南
- 寫文檔
- 提交你的主題到WordPress.org
- 參考文獻
- 模板標簽列表
- 條件標簽列表
- 編碼標準
- HTML編碼標準
- CSS編碼標準
- JavaScript編碼標準
- PHP編碼標準
- 插件開發
- 插件開發簡介
- 什么是插件
- 插件基礎
- 頭部要求
- 包括軟件許可證
- 啟用 / 停用 Hooks
- 卸載方法
- 最佳做法
- 插件安全
- 檢查用戶功能
- 數據驗證
- 保護輸入
- 保護輸出
- 隨機數
- Hooks
- Actions
- Filters
- 自定義Hooks
- 高級主題
- 管理菜單
- 頂級菜單
- 子菜單
- 短代碼
- 基本短碼
- 封閉短碼
- 帶參數的短代碼
- TinyMCE增強型短碼
- 設置
- 設置API
- 使用設置API
- 選項API
- 自定義設置頁面
- 元數據
- 管理帖子元數據
- 自定義元數據
- 渲染元數據
- 自定義文章類型
- 注冊自定義文章類型
- 使用自定義文章類型
- 分類
- 使用自定義分類
- 在WP 4.2+中使用“split術語”
- 用戶
- 創建和管理用戶
- 使用用戶元數據
- 角色和功能
- HTTP API
- JavaScript
- jQuery
- Ajax
- 服務器端PHP和入隊
- Heartbeat API
- 概要
- 計劃任務
- 了解WP-Cron計劃
- 安排WP-Cron 事件
- 將WP-Cron掛接到系統任務計劃程序中
- WP-Cron簡單測試
- 國際化
- 本地化
- 如何國際化您的插件
- 國際化安全
- WordPress.org
- 詳細插件指南
- 規劃您的插件
- 如何使用Subversion
- 插件開發者常見問題
- 開發工具
- Debug Bar 和附加組件
- 輔助插件
- REST API手冊
- 資源
- 文章
- 文章修訂
- 文章類型
- 文章狀態
- 類別
- 標簽
- 頁面
- 評論
- 分類
- 媒體
- 用戶
- 設置
- 使用REST API
- 全局參數
- 分頁
- 鏈接和嵌入
- 發現
- 認證
- 經常問的問題
- 骨干JavaScript客戶端
- 客戶端庫
- 擴展REST API
- 添加自定義端點
- 自定義內容類型
- 修改回應
- 模式
- 詞匯表
- 路由和端點
- 控制器類