如何将 Node.js WPAPI 与 Wordpress.com 结合使用?

问题描述 投票:0回答:1

我正在尝试弄清楚如何将 Node.js WPAPI 与 WordPress.com 上托管的 WordPress 博客一起使用。

您可能知道 Wordpress.com 网站没有典型的

/wp-json
端点;相反,您可以在
https://public-api.wordpress.com/wp/v2/sites/MYSITE.wordpress.com
上找到 Wordpress.com JSON REST API,例如https://public-api.wordpress.com/wp/v2/sites/amazingstartupguide.wordpress.com

我正在使用适用于 Node.js 版本的 WPAPI

2.0.0-alpha.1
以及 WPAPI 文档中使用的基于 promise 的 v2 语法:

import WPAPI from 'wpapi'

const siteSlug = 'amazingstartupguide'
const siteUrl = `https://public-api.wordpress.com/wp/v2/sites/${siteSlug}.wordpress.com`
const wp = new WPAPI({ endpoint: siteUrl })

console.log('wp:', wp);

console.log('await wp.posts().get():', await wp.posts().get())

第一个

console.log
输出一个看起来健康的 WPAPI 对象,但是当获取
posts
时,我收到错误:

TypeError: this.transport.get is not a function

如果我将导入更改为:

import WPAPI from 'wpapi/superagent'

我得到:

Error: {
    "code": "rest_no_route",
    "message": "No route was found matching the URL and request method.",
    "data": { "status": 404 }
}

该怎么办?

node.js wordpress wordpress-rest-api wp-api wordpress.com
1个回答
0
投票

看起来 WPAPI 库不再被积极维护,尽管遵循了文档,但错误仍然发生。相反,我使用 axios 编写了下面的代码,这将完成您想要做的事情。使用 axios,您只需为任何 WordPress 站点提供正确的 URL,它就会为您获取数据。这种方法更容易处理不遵循 WPAPI 期望的标准结构的 API,特别是因为 WPAPI 可能尚未更新以正确处理这些 URL。

import axios from 'axios';

const siteSlug = 'amazingstartupguide';
const siteUrl = `https://public-api.wordpress.com/wp/v2/sites/${siteSlug}.wordpress.com/posts`;

(async () => {
    try {
        const response = await axios.get(siteUrl);
        const posts = response.data;

        console.log('Posts:', posts);
    } catch (error) {
        console.error('Error fetching posts:', error.response ? error.response.data : error.message);
    }
})();
© www.soinside.com 2019 - 2024. All rights reserved.