2016-08-24 1 views
0

Ich habe die Wordpress-API auf einer unserer Unternehmenswebseiten installiert, so dass wir Daten daraus abrufen können, um sie auf einer neuen Unternehmens-Website anzuzeigen. In Bezug auf das Ergreifen und Anzeigen der Ausgangsdaten funktioniert alles gut (Beiträge von einer bestimmten Kategorie von der ursprünglichen Website auf eine bestimmte Seite auf der neuen Website).Wordpress API - Link zu den vollständigen Post-Details aus der Liste der Beiträge

Dies ist für Ereignisse, die auf einer Whats-on-Seite der vorhandenen Website eingegeben werden, die in einer Bar/einem Restaurant stattfinden. Die neue Seite ist rein auf die Ereignisse ausgerichtet und um das Hinzufügen/Ändern der Ereignisse auf beiden Seiten zu vermeiden, hielten wir es für das Beste, die API zu verwenden.

Um die vollständige Liste der Ereignisse abgerufen werden (die funktioniert) Ich verwende:

$response = wp_remote_get('http://restuarantdomain.com/wp-json/wp/v2/posts?filter[category_name]=live-events&per_page=50'); 

Ich weiß auch, dass eine individuelle Beitrag anzuzeigen muss ich verwenden:

$response = wp_remote_get('http://restaurantdomain.com/wp-json/wp/v2/posts?filter[name]=event_name); 

Was kann ich‘ Um herauszufinden, wie es geht, erstellen Sie eine "freundliche" URL auf der neuen Site, die dann auf eine Seite geht, die die Funktion aufruft, um die einzelnen Post-Details zu erhalten.

Zum Beispiel möchte ich die URL http://eventdomain.com/whats-on/event-name (in der Liste der Ereignis Beiträge durch den 1. API-Aufruf oben abgeholt) auf die Seite Was ist auf und auf dieser Seite gehen Sie mit dem Ereignis-Namen aus der URL als Parameter in der 2. API-Aufruf oben. Aber Wordpress sucht nur nach der Kategorie und dem Postnamen aufgrund des Formats der URL, die nicht existiert, also bekomme ich nur einen 404.

Was vermisse ich?

+0

Sie können die Kopie der ursprünglichen Datenbank für ein neues Projekt verwenden, indem Sie einfach die Home-URL und die Admin-URL ändern. Versuche dies. –

+0

Danke, aber ich möchte nicht eine Kopie der ursprünglichen Datenbank verwenden, sonst hätte ich das getan, das ist nicht der Zweck von mir mit der API. Dies ist eine andere Website für einen anderen Teil des Geschäfts mit einem sind die gleichen, anstatt es zweimal eingeben jedes Mal gibt es neue Beiträge, die wir nur hinzufügen oder auf einer Website aktualisieren müssen. – emdav43

+0

Ich denke, es ist schwierig zu verwalten .. Ein einziger Weg für diese, sollten Sie die Post-Daten aus der ursprünglichen Website-Datenbank durch mysql Verbindung Abfrage von wp_post und wp_postmeta abrufen. Hier haben Sie alles Ding manully löschen, fügen Sie Post usw. @ emdav43. Als Ihre Anforderung, dieses Ding nur eine Möglichkeit.Wenn Sie nicht zufrieden sind, dann bitte bearbeiten Sie Ihre Frage und erklären Sie es deutlich Sehr geehrte Damen und Herren, –

Antwort

0

Sie müssen Ihre benutzerdefinierten Endpunkte erstellen.

zum Beispiel, wenn Sie alle Beiträge innerhalb einer bestimmten Kategorie filtern wollen, sollten Sie dies tun

function my_cat_func($data) { 
    $posts = get_posts(array(
     'cat' => $data['id'], 
    )); 

    if (empty($posts)) { 
     return null; 
    } 

    return $posts[0]->post_title; 
} 

dann müssen Sie eine Aktion fügen Sie Ihren Endpunkt Anruf registrieren

add_action('rest_api_init', function() { 
    register_rest_route('myplugin/v2', '/categoy/(?P<id>\d+)', array(
     'methods' => 'GET', 
     'callback' => 'my_cat_func', 
    )); 
}); 

dann werden Sie Holen Sie sich so etwas

http://example.com/wp-json/myplugin/v2/categoy/(?P<id>\d+) 

für weitere Informationen und besser zu verstehen ing, empfehle ich Ihnen diesen Hinweis lesen: http://v2.wp-api.org/extending/adding/

Dieser Artikel können Sie auch mehr Beispiel: https://webdevstudios.com/2015/07/09/creating-simple-json-endpoint-wordpress/ und https://deliciousbrains.com/wp-rest-api-customizing-endpoints-adding-new-ones/

Anmerkung: Ich schrieb diesen Code on the fly, die mehr Anstrengungen benötigen, sollten zu arbeiten .

+0

Vielen Dank für Ihre Hilfe Majid, ich denke, ich habe die Idee, aber wird weiterlesen durch Ihre vorgeschlagenen Links morgen, wenn mein Gehirn weniger frazzled ist. – emdav43

+0

Großartig, wenn Sie daran gearbeitet haben und sehen, dass es für Sie funktioniert, hinterlassen Sie hier einen Kommentar und akzeptieren Sie diese Antwort, ich hoffe, dass es später anderen hilft. – Majid

Verwandte Themen