diff --git a/docs/blog.md b/docs/blog.md
index 1e72b261e..ef6947dac 100644
--- a/docs/blog.md
+++ b/docs/blog.md
@@ -72,6 +72,10 @@ pageClass: routes
+## WordPress
+
+
+
## 阿里云系统组技术博客
### 首页
diff --git a/lib/router.js b/lib/router.js
index 472fcbdb5..8a90b1bb6 100644
--- a/lib/router.js
+++ b/lib/router.js
@@ -1411,6 +1411,9 @@ router.get('/blogs/wangyin', require('./routes/blogs/wangyin'));
// 王五四文集
router.get('/blogs/wang54/:id?', require('./routes/blogs/wang54'));
+// WordPress
+router.get('/blogs/wordpress/:domain/:https?', require('./routes/blogs/wordpress'));
+
// 裏垢女子まとめ
router.get('/uraaka-joshi', require('./routes/uraaka-joshi/uraaka-joshi'));
router.get('/uraaka-joshi/:id', require('./routes/uraaka-joshi/uraaka-joshi-user'));
diff --git a/lib/routes/blogs/wordpress.js b/lib/routes/blogs/wordpress.js
new file mode 100644
index 000000000..f05fe6287
--- /dev/null
+++ b/lib/routes/blogs/wordpress.js
@@ -0,0 +1,30 @@
+const parser = require('@/utils/rss-parser');
+
+module.exports = async (ctx) => {
+ const scheme = ctx.params.https || 'https';
+ const domain = `${scheme}://${ctx.params.domain}`;
+ const feed = await parser.parseURL(`${domain}/feed/`);
+ const items = await Promise.all(
+ feed.items.map(async (item) => {
+ const cache = await ctx.cache.get(item.link);
+ if (cache) {
+ return Promise.resolve(JSON.parse(cache));
+ }
+ const article = {
+ title: item.title,
+ description: item['content:encoded'],
+ pubDate: item.pubDate,
+ link: item.link,
+ author: item.creator,
+ };
+ return Promise.resolve(article);
+ })
+ );
+
+ ctx.state.data = {
+ title: feed.title,
+ link: feed.link,
+ description: feed.description,
+ item: items,
+ };
+};