2016-05-27 11 views
0

Ich habe angefangen mit ember zu spielen und versuche die WordPress REST API und EmberJS zu kombinieren. Ich stecke mit diesem Problem fest: Ich möchte, dass Ember mir alle WordPress-Beiträge einer bestimmten Kategorie oder eines bestimmten Tags anzeigt.EmberJS, WordPress REST API und Kategorien und Tags

Ich habe eine Route, die mir alle Kategorien routes/categories.js zeigt, die in der Kategorie Modell models/category.js sind. Jetzt brauche ich eine Route für jede Kategorie routes/categories/category.js, die mir alle Beiträge innerhalb einer bestimmten Kategorie zeigt.

post und category sind zwei Modelle, die ich kombiniert bekommen muss ich denke, aber ich weiß nicht, wie ...

In routes/categories.js ich so etwas wie dieses

export default Ember.Route.extend({ 
    model() { 
    return Ember.RSVP.hash({ 
     categories: this.store.findAll('category'), 
     posts: this.store.findAll('post') 
    }); 
    }, 
    setupController(controller, model) { 
    this._super(...arguments); 
    Ember.set(controller, 'categories', model.categories); 
    Ember.set(controller, 'posts', model.posts); 
    } 
}); 

Und in templates/categories.hbs haben diese

<p>List of all categories in the model</p> 
<ul> 
    {{#each categories as |category|}} 
     <li>{{link-to category.name 'categories.category' category}}</li> 
    {{/each}} 
</ul> 

Jetzt möchte ich alle Beiträge sehen, die in dieser Kategorie sind routes/categories/category.js

export default Ember.Route.extend({ 
    model(params) { 

     ...???... 

    } 
}); 

und in templates/categories/category.hbs?

<h3>List all posts from the selected category</h3> 
<ul> 
    {{#each posts as |post|}} 
     <li>{{link-to post.title 'posts.post' post}}</li> 
    {{/each}} 
</ul> 

Kann jemand dabei helfen?

Antwort

0

Was Sie tun müssen, ist die Abfrage aller Beiträge nach Kategorie gefiltert. Suchen Sie zuerst den Endpunkt mit den Daten, die Sie benötigen.

Um Beiträge Kategorie mit den WP-API filtern Sie tun können:

example.com/wp-json/wp/v2/posts?per_page=99&filter[category_name=my-category]

die Kategorie des Modells Route wir eine dynamische Route benötigen passieren. Zum Beispiel:

this.route('category', {path: 'categories/:slug'});

..., die in example.com/categories/food verwandeln würde. Die entsprechende glut-Daten Methode wäre:

model(params) { return this.store.query('post', {per_page: 99, filter: {category_name: params.slug}}); }

Ich habe ein vollständiges Beispiel hier: http://ember-wordpress.surge.sh/.

Der (dokumentierte) Quellcode ist hier https://github.com/oskarrough/ember-wordpress/, im Ordner tests/dummy.

+0

Großartig, das funktioniert! Ich wusste nicht, dass es möglich ist, die WP-API-Endpunkte direkt zu filtern. Ich dachte, ich müsste in der App filtern. Danke vielmals! – Viktor