从ID中获取用户数据:WP REST API

时间:2018-08-21 21:53:10

标签: wordpress reactjs headless next.js wp-api

我正在建立我的第一个完整的反应网站,但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元素手动输入了内容)

2 个答案:

答案 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,因为它很容易!