2016-12-25 2 views
1

ab. Ich entwickle ein reactjs-Backend mit der WP-REST-API. Ich versuche nun, den eingebauten JavaScript-Client zu nutzen, so dass ich das wpapi Knoten-Paket in meinem Projekt (https://www.npmjs.com/package/wpapi) installiert habe.Rufen Sie WordPress-Posts mit benutzerdefiniertem Post-Typ mit dem WP-Rest-API-JavaScript-Client (Backbonejs)

... 
'show_in_rest'  => true, 
'rest_base'   => 'mycptslug',//sustituye a posts 
'rest_controller_class' => 'WP_REST_Posts_Controller', 
... 

und sie arbeiten perfekt beim Zugriff direkt (Postbote, jquery, Browser-Adressleiste ...):

Ich habe das entsprechende Verhalten und Endpunkte meiner CPTs aktiviert.

Beim Replizieren der Beispiele des offiziellen npm wpapi-Moduls funktionieren sie auch wie erwartet in meiner Installation.

Das Problem ist, dass ich nicht wissen kann, wie die Beiträge meiner benutzerdefinierten Beitragstypen mit den Clientjs von der WP Rest API-Community zur Verfügung gestellt bekommen. Ich habe kein funktionierendes Beispiel in einem einfachen Knotenprojekt gefunden. In der offiziellen Dokumentation gibt es keine spezifischen Informationen darüber, wie dies zu erreichen ist (für jemanden mit meinen js Fähigkeiten :)).

Ich habe bereits versucht:

https://github.com/WP-API/WP-API/issues/1299

und folgen:

https://bay-a.co.uk/wordpress-tips/wp-api-v2-tips/

, aber ich kann sie nicht arbeiten (zB: Kann nicht Eigentum 'Modelle' undefinierten lesen).

Vielen Dank für Ihre Zeit. Ich denke, es ist etwas, viele Leute bereits getan hat ...

bearbeiten (vorgeschlagen von Andreyco): Mein Code ist wie die in dem Github Problem hingewiesen:

var WPAPI = require('wpapi'); 
var wp = new WPAPI({ endpoint: 'http://myurl/wp-json'}); 
var pI = wp.api.models.Post.extend({ 
        urlRoot: 'http://myurl/wp-json/wp/v2/' + '/pi', 
          defaults: { 
           type: 'my-cpt' 
          } 
         }); 
var MyPI = wp.api.collections.Posts.extend({ 
          url: 'http://myurl/wp-json/wp/v2/' + 'pis', 
          model: pI 
         }); 

var thePI = new MyPI(); 

thePI.fetch({ 
      filter: { 
         nopaging: true 
         } 
      }).done(function() { 
          thePI.each(function(mypi) { 
           console.log(mypi.attributes); 
          }); 
         }); 

Aber es gibt die folgenden error: Uncaught TypeError: Kann die Eigenschaft 'models' von undefined nicht lesen. Bitte beachte, dass ich die Urls hart codiert, weil die wpApiSettings konstant mich auch nicht definierte Fehler gab ...

+0

Zeigen Sie uns den Code zum Abrufen von Daten aus der WP-API. – Andreyco

Antwort

1

Dank sdgluck Benutzer in Github, der die Lösung gab.

https://github.com/WP-API/node-wpapi/issues/283

dachte ich, der Knoten-wpapi ein Knoten Paket war die Backbone.js Client des wp Rest api enthalten, und es ist nicht. Also habe ich immer Fehler bekommen, indem ich die Backbonejs-Client-Funktionen auf das installierte node-wpapi-Paket angewendet habe.

Hoffe es hilft jedem Anfänger.

1

Hier ist ein direkter Link zu der Dokumentation aus dem oben genannten GitHub-Problem: http://wp-api.org/node-wpapi/custom-routes/ Diese Seite dokumentiert, wie Sie mit der registerRoute-Methode der wpapi-Bibliothek benutzerdefinierte Endpoint-Handler-Factories für Ihre eigenen benutzerdefinierten Post-Typen einrichten.

Verwandte Themen