因此,我试图找到与此有关的信息,但我感到非常困惑。 我正在使用react运行无头wordpress,并且有一个页面可以提取我的单个帖子并返回。
每个帖子(称为Tjanster的自定义帖子类型)都有一个acf字段,该字段与另一个自定义帖子类型(与该帖子相关联的人)相关。
现在,一切都可以用来获取帖子内容以及带有ID和子弹等的人员对象。但是我需要该“人员帖子类型”中的ACF内容。
我现在的想法是我从帖子中的人员对象获取ID,然后针对该ID直接向人员端点进行另一次api获取,这是正确的想法吗?
这是我通过(http://localhost:8080/wp-json/wp/v2/tjanster)中的acf.person [0] .id获得的json帖子
在这里,我得到的人的ID是68,然后我可以向http://localhost:8080/wp-json/wp/v2/person/68发出请求,该请求将返回具有正确acf信息的对象:
这就是我的tjanster.js(单页)现在的样子:
import Layout from "../components/Layout.js";
import React, { Component } from "react";
import fetch from "isomorphic-unfetch";
import Error from "next/error";
import PageWrapper from "../components/PageWrapper.js";
import Menu from "../components/Menu.js";
import { Config } from "../config.js";
class Tjanster extends Component {
static async getInitialProps(context) {
const { slug, apiRoute } = context.query;
const res = await fetch(
`${Config.apiUrl}/wp-json/postlight/v1/${apiRoute}?slug=${slug}`
);
const tjanster = await res.json();
return { tjanster };
}
render() {
if (!this.props.tjanster.title) return <Error statusCode={404} />;
let personId = this.props.tjanster.acf.person[0].ID;
console.log(personId);
return (
<Layout>
{this.props.tjanster.title.rendered}
</Layout>
);
}
}
export default PageWrapper(Tjanster);
如您所见,我在渲染下将person对象的id保存为personId,但是我不完全确定下一步该怎么做?我以为可以使用${Config.apiUrl}/wp-json/wp/v2/person/${personId}
在顶部进行另一次访存,但由于无法访问ID,因此无法正常工作。
任何想法将不胜感激!
答案 0 :(得分:1)
您需要使用javascript Promise处理多个异步调用。只需将a链接起来,然后在首次获取后,您就可以在该ID可用时访问该ID。