我使用此semi-official plugin來啓用API調用。不包括類別的WP-REST API不起作用
但我找不到排除類別的方法。例如,如果我有mysite.com/wp-json/wp/v2/posts?filter[category__not_in]=10
,它將忽略過濾器並顯示所有最新帖子。
有沒有方法從API調用中排除類別?
我使用此semi-official plugin來啓用API調用。不包括類別的WP-REST API不起作用
但我找不到排除類別的方法。例如,如果我有mysite.com/wp-json/wp/v2/posts?filter[category__not_in]=10
,它將忽略過濾器並顯示所有最新帖子。
有沒有方法從API調用中排除類別?
使用REST API一些過濾僅適用於已登錄的用戶:當作爲用戶 與edit_posts
認證
此外,以下是可供選擇:
[...]
category__not_in
這是取自Rest API 1.0 documentation。
這意味着您需要以編輯身份登錄(具有edit_posts
功能的用戶)。對於一個乾淨的方式這樣做,我建議創建REST用戶的作用很小,只有您需要的功能,這樣的事情:
add_role(
'rest_user',
__('REST User'),
array(
'read' => true,
'edit_posts' => true,
'delete_posts' => false
)
);
然後用下面的做你的查詢作爲身份驗證的用戶:
$response = wp_remote_request('http://example.com/wp-json/wp/v2/posts?filter[category__not_in]=10', array(
'method' => 'GET',
'headers' => array(
'Authorization' => 'Basic ' . base64_encode('login:password')
)
));
感謝this article您共享,看來你需要聲明篩選器名稱爲查詢變種,所以在這種情況下:
add_filter('query_vars', function($query_vars) {
$query_vars[] = 'category__not_in';
return $query_vars;
});
這很有道理,因爲WordPress是刪除任何未聲明的GET參數,但我不明白爲什麼所有過濾器都沒有聲明爲WP核心內的查詢變量...
對於WP API V2,使用負號,例如:
http://yourwpwebsite/wp-json/wp/v2/posts/&filter[cat]=1,2,-3
將檢索與ID = 1和ID = 2,但與ID類別排除任何職位= 3
不能升級到4.4類別的所有帖子? Rest API現在是核心的一部分。 – vard
@vard哦我已經升級到4.4,但我認爲它仍然需要插件。 – hrsetyono
Mmh它不應該,當你停用它,並嘗試使用其餘的API時,你有任何錯誤? (我不確定它是否默認使用API的2.0或1.0版本,但可以通過config來設置) – vard