我正在建立我的第一个完整的反应网站,但WP REST API遇到了问题。我有一个博客页面,其中列出了我从WordPress发出的帖子,没问题。唯一的问题是,我在帖子数组上进行映射,作者是一个数字(作者ID)。
在这种情况下如何获取用户ID?
import React, { Component } from "react"
...
class Blog extends Component {
static async getInitialProps() {
const postsRes = await fetch(`${Config.apiUrl}/wp-json/wp/v2/posts?_embed`)
const post = await postsRes.json()
return(post)
}
render() {
const posts = this.props.posts.map((post,index) => {
return(
<li key={index}>
{post.better_featured_image != null ? <Feat img=
{post.better_featured_image.source_url}/> : ""}
<Link
as={`/blog/${post.slug}`}
href={`/blog?slug=${post.slug}&apiRoute=post`}
>
<a>{post.title.rendered}</a>
<p>{post.author}</p> //Returns ID I need name
</Link>
</li>
)
})
}
}
我希望能够将作者姓名放在上面的评论位置。我已经尝试过构建函数,但是我无法弄清楚。我试图弄清楚是否应该调用一个可以从post.author传递该ID的函数,然后将其附加到/ wp-json / wp / v2 / users / 在此处插入 < / p>
任何提示或建议!
(很抱歉,如果我在语法上有一些小错误,我使用样式化的组件,只用标准的jsx元素手动输入了内容)
答案 0 :(得分:2)
您有两个选择,第一个:
==>要通过端点获取用户数据:
/ wp-json / wp / v2 / users / USER_ID
==>第二种选择是,将新字段 author_name 注册到帖子响应中,如下所示:
add_action( 'rest_api_init', 'rest_get_author_name' );
function rest_get_author_name() {
register_rest_field( 'post',
'author_name',
array(
'get_callback' => 'get_author_name'
)
);
}
function get_author_name( $object ) {
return the_author_meta( 'user_nicename' , $object['author'] );
}
此代码应放在您主题的functions.php中。
答案 1 :(得分:0)
好吧,对于将来有任何关注的人。 Shahin的答案仍然是正确的,但是我发现了一种更简单的方法。
您可以看到我正在使用/ wp-json / wp / v2 / posts?_embed
使用_embed给您带来一些额外的魔力。
<p>Author: {post._embedded.author[0].name}</p>
这是您访问作者姓名的方式。如果您正在寻找任何东西,应该先检查_embedded,因为它很容易!