Wordpress Rest Api 帖子获取

Posted

技术标签:

【中文标题】Wordpress Rest Api 帖子获取【英文标题】:Wordpress Rest Api post fetching 【发布时间】:2018-04-05 18:50:15 【问题描述】:

我正在尝试显示我的 wordpress 网站上的所有帖子。目前有2个帖子,可以在json文件中看到: View

export class HomePage 
url: string = ‘http://feederhorgasz.000webhostapp.com/wp-json/wp/v2/posts?_embed?filter[orderby]=date&order=asc1’;
items: any;

constructor(public navParams: NavParams,public navCtrl: NavController, private http:Http) 

console.log('Passed params', navParams.data);

ionViewDidEnter() 
this.http.get( this.url )
.map(res => res.json())
.subscribe(data =>

this.items = data;
console.log(“átadott wp api”,data);

    ); 

但是,当我尝试从 json 中读取数据时,它只列出了一个对象。 (我可以在日志中看到)

【问题讨论】:

【参考方案1】:

那是因为您告诉 Angular 从结果中获取单个值。 this.items = data; 其中items: any; 能够存储一个值,您必须定义您期望一个数据数组而不仅仅是一个对象。所以简单的答案是:

// By adding [] it will be concidered an array
items: any[];
this.http.get(this.url)
  .map(res => res.json())
  .subscribe(data: any[] => 
    //Line below will throw error if it not defined as an array
    this.items = data;
    console.log(“átadott wp api”, data);
  );

你的代码风格会导致你进入一个混乱的项目;我的意思是你不应该像现在这样把componentsservices 混在一起。将服务排除在组件之外是非常有益的,因为如果您必须更改 http.get 方法之一,这将减少工作量;下线。我将添加 sn-p 以获得理想情况下的内容。

主页组件

export class HomePage 

  items: Type[];
  constructor(public navParams: NavParams, public navCtrl: NavController, private posts: HomepageService) 

    console.log('Passed params', navParams.data);
  

  ionViewDidEnter() 
    this.post.getPosts().subscribe(data: Type[] => 
        this.items = data;
        console.log(“átadott wp api”, data);
    );
  

主页服务

@Injectable()
export class HomepageService 
  url: string = "http://feederhorgasz.000webhostapp.com/wp-json/wp/v2/posts?_embed?filter[orderby]=date&order=asc1";

    constructor(private http: Http) 

  getPosts(): Observable < Type[] > 
    return this.http.get(this.url)
      .map(res => res.json() as Type[])
      .catch((err: Response) => Observable.throw(console.log(err)));
  

如你所见,如果你想改变端点的URL,你只需要更新单个文件;并非您编写该服务的所有组件。

类 (Type)

您还应该使用classes 来映射响应 JSON,以便 Angular 可以将其作为对象进行交互,而不是某种类型的字符串。 Class

【讨论】:

以上是关于Wordpress Rest Api 帖子获取的主要内容,如果未能解决你的问题,请参考以下文章

React Native - 如何使用 JWT 令牌从 WordPress REST API 获取私人帖子

Wordpress 5.4。 REST API通过子弹无法工作

Wordpress Rest API:返回 100 多个结果

WordPress REST API - 有没有办法在帖子响应中返回类别和父类别名称?

如何使用 JQuery.ajax 从每个 WordPress 帖子中获取缩略图附件?

无法显示来自 Wordpress REST API 自定义端点的自定义字段