[WordPress] 外掛分享: Arha Routes

首頁外掛目錄 › Arha Routes
10+
安裝啟用
尚無評分
2141 天前
最後更新
問題解決
WordPress 5.0+ PHP 7.1+ v1.5 上架:2019-10-04

內容簡介

WordPress 外掛描述:

這是一個 WordPress 外掛,它可以幫助開發者透過 REST 路由提供內容並提供自訂選項。

可用路由

/wp-json/arha/v1/post
/wp-json/arha/v1/page
/wp-json/arha/v1/options
/wp-json/arha/v1/archive

查詢範例

/wp-json/arha/v1/post?post_type=POST_TYPE&slug=SLUG
/wp-json/arha/v1/page?path=PATH
/wp-json/arha/v1/options
/wp-json/arha/v1/archive?post_type=POST_TYPE&posts_per_page=POSTS_PER_PAGE&paged=PAGED&orderby=ORDERBY&order=ORDER

存檔路由中的 tax_query 和 meta_query

支援 tax_query 和 meta_query,用法類似 new WP_Query() 中的查詢條件。
兩者的值皆需要以字串化的 JSON 格式傳遞。

存檔路由中的多個文章型別

為了在存檔路由中傳遞多個文章型別,可使用可讓 PHP 將 GET 參數讀取為陣列的語法。參考:https://stackoverflow.com/a/9547490

過濾器

若要在 post 和 archive 路由中排除特定的文章型別,可以使用以下過濾器:

`
add_filter(‘arha_routes/archive_excluded_post_types’, ‘exclude_post_types’);
add_filter(‘arha_routes/post_excluded_post_types’, ‘exclude_post_types’);

function exclude_post_types($excluded_post_types) {
$excluded_post_types = [‘post’];
return $excluded_post_types;
}
`

若要在傳送給客戶端之前格式化 post 路由的文章,可以使用 arha_routes/format_post 過濾器:
`
add_filter(‘arha_routes/format_post’, ‘format_post’);

function format_post($post) {
return $post;
}
`

若要在傳送給客戶端之前格式化 page 路由的文章,可以使用 arha_routes/format_page 過濾器:
`
add_filter(‘arha_routes/format_page’, ‘format_page’);

function format_page($page) {
return $page;
}
`

若要在傳送給客戶端之前格式化 archive 路由中的文章,可以使用 arha_routes/format_archive_post 過濾器:

add_filter('arha_routes/format_archive_post', 'format_archive_post');
function format_archive_post($post) {
return $post;
}

options 路由預設會回傳空白結果。若要加入內容,可以使用 arha_routes/format_options 過濾器:
`
add_filter(‘arha_routes/format_options’, ‘format_options’);

function format_options($options) {
return $options;
}
`

預設情況下,Arha Routes 在發送 post、page 和 archive 路由的資料時只會回傳已公開的內容。若要更改這個設定,可以使用以下過濾器:
`
// for archive route
add_filter(‘arha_routes/allowed_post_statuses_archive’, ‘allowed_post_statuses’);
// for post route
add_filter(‘arha_routes/allowed_post_statuses_post’, ‘allowed

外掛標籤

開發者團隊

⬇ 下載最新版 (v1.5) 或搜尋安裝

① 下載 ZIP → 後台「外掛 › 安裝外掛 › 上傳外掛」
② 後台搜尋「Arha Routes」→ 直接安裝(推薦)

原文外掛簡介

WordPress plugin that helps to serve content through REST routes and gives
customizability to developers through filters.
Available Routes

/wp-json/arha/v1/post
/wp-json/arha/v1/page
/wp-json/arha/v1/options
/wp-json/arha/v1/archive

Example queries

/wp-json/arha/v1/post?post_type=POST_TYPE&slug=SLUG
/wp-json/arha/v1/page?path=PATH
/wp-json/arha/v1/options
/wp-json/arha/v1/archive?post_type=POST_TYPE&posts_per_page=POSTS_PER_PAGE&paged=PAGED&orderby=ORDERBY&order=ORDER

tax_query and meta_query in archive-route

tax_query and meta_query are supported and they work how the query is built for it in new WP_Query()
both needs their values to bes passed in as stringified json

Multiple post_types in archive-route

To pass multiple post_types in archive-route, use syntax that lets PHP read GET-param as an array. https://stackoverflow.com/a/9547490

Filters

To exclude querying specific post types from post– and archive-routes, you
can use following filters:
`
add_filter(‘arha_routes/archive_excluded_post_types’, ‘exclude_post_types’);
add_filter(‘arha_routes/post_excluded_post_types’, ‘exclude_post_types’);

function exclude_post_types($excluded_post_types) {
$excluded_post_types = [‘post’];
return $excluded_post_types;
}
`

To format post-route’s post before it’s served to client, use arha_routes/format_post-filter
`
add_filter(‘arha_routes/format_post’, ‘format_post’);

function format_post($post) {
return $post;
}
`

To format page-route’s post before it’s served to client, use arha_routes/format_page-filter
`
add_filter(‘arha_routes/format_page’, ‘format_page’);

function format_page($page) {
return $page;
}
`

To format archive-route’s posts before they are served to client, use arha_routes/format_archive_post-filter
add_filter('arha_routes/format_archive_post', 'format_archive_post');
function format_archive_post($post) {
return $post;
}

options-route returns empty result by default. To add content to it, use arha_routes/format_options-filter
`
add_filter(‘arha_routes/format_options’, ‘format_options’);

function format_options($options) {
return $options;
}
`

By default Arha Routes returns only published content with post-, page- and archive-route, this can be modified by adding following filters.
`
// for archive route
add_filter(‘arha_routes/allowed_post_statuses_archive’, ‘allowed_post_statuses’);
// for post route
add_filter(‘arha_routes/allowed_post_statuses_post’, ‘allowed_post_statuses’);
// for page route
add_filter(‘arha_routes/allowed_post_statuses_page’, ‘allowed_post_statuses’);
function allowed_post_statuses($post_statuses) {
// … change post_statuses array
return $post_statuses;
}
`
After adding setting up these filters, request can include “post_status” parameter and it will be compared to $post_statuses array.

SearchWP
Arha Routes supports SearchWP-plugin, which lets WP users to make keyword search engine for their content.
Activating SearchWP-plugin adds optional keyword-search functionality to archive-route. This is done by adding s=KEYWORD to the route
– Example: /wp-json/arha/v1/archive?post_type=products&posts_per_page=10&paged=1&orderby=date&order=ASC&s=monitor
Polylang
Arha Routes supports Polylang-plugin, which allows users to create content in multiple languages.
Activating Polylang changes how endpoints work:

All routes require additional lang-param

Example: /wp-json/arha/v1/archive?post_type=products&posts_per_page=10&paged=1&orderby=date&order=ASC&lang=en

page-route doesn’t support language prefix in path

Example: Permalink /zh/info, use like this /wp-json/arha/v1/page?path=/info&lang=zh
Example: Permalink /en/info/test, use like this /wp-json/arha/v1/page?path=/info/test&lang=zh

options-route passes lang-param forward to arha_routes/format_options-filter
add_filter('arha_routes/format_options', 'format_options', 10, 2);
function format_options($options, $lang) {
return $options;
}

Polylang + SearchWP
In order to make these two plugins work together, you need to add extra plugin to WP installation.

Polylang Integration

延伸相關外掛

文章
Filter
Apply Filters
Mastodon