最近有個需求是要爬公司部落格的文章到官網顯示。搜尋一下,知道WordPress有Rest API,非常簡單就可以達成需求。
https://your.domain/wp-json/wp/v2/posts
如此會顯示一頁10則資料。可以加入page query來指定頁數,或per_page query指定一頁顯示幾則。其他還有offset 跟 order 的功能,有興趣可以看官網文件:
但官網上並沒有想要顯示所有的文章,只想要顯示一個類別或包含一個標籤的文章。於是我們需要可以透過標籤或類別來過濾的功能。稍微Google一下,會發現有個 ?filter[tag]=xxx 的query,不過這是舊版的,從WordPress 4.7以後就移除filter了。新版為:
https://your.domain/wp-json/wp/v2/posts?tags=4
tags無法填入文字,而是必須填id,這個id可以從資料庫的wp_terms表裡面找到:
當要取id為1跟3的tag時,就用逗點分開即可。另外類別filter的query如下:
https://your.domain/wp-json/wp/v2/posts?categories=5,1
分類一樣是填入id,一樣可從wp_terms裡去找到。其他還有很多filter,有興趣可以看一下官方文件: