2016-08-24 59 views
0

我已經在我們公司的網站上安裝了Wordpress API,以便我們可以從它檢索數據以顯示在新的公司網站上。關於抓取並顯示初始數據,所有工作都正常(從原始網站的特定類別的帖子到新網站上的特定頁面)。WordPress的API - 從帖子列表鏈接到完整的帖子詳細信息

這是針對在現有網站上的「whats on」頁面上輸入的事件,這些事件發生在酒吧/餐廳。新網站純粹專注於這些活動,並且無需添加/修改我們認爲最適合使用該API的兩個網站上的活動。

要檢索事件的全面上市(工作)我使用:

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

我也知道,以顯示個人後,我需要使用:

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

我可以」 t解決問題的方法是在新網站上創建一個「友好」網址,然後轉到調用函數的頁面以獲取各個帖子的詳細信息。

例如,我想要url http://eventdomain.com/whats-on/event-name(通過上面的第一個API調用抓取的事件帖子列表)轉到頁面什麼是On和該頁面使用url中的event-name作爲參數上面的第二個API調用。但WordPress的只是尋找類別和帖子名稱,由於url不存在的格式,所以我只得到了一個404.

我錯過了什麼?

+0

只需更改主頁網址和管理網址,即可將原始數據庫的副本用於新項目。嘗試這個。 –

+0

謝謝,但我不想使用原始數據庫的副本,否則我會這樣做,這不是我使用API​​的目的。這是一個不同的網站的另一部分業務與一個是相同的,而不是輸入兩次,每次有新帖,我們只需要在一個網站上添加或更新它。 – emdav43

+0

我認爲它很難管理..只有這樣的方法,您應該通過從wp_post和wp_postmeta進行的mysql連接查詢從原始網站數據庫中檢索發佈數據。在這裏,你已經像刪除一樣手動完成了所有事情,添加了post @ etc @ emdav43。根據你的要求,這個東西只有一個方法。如果您不滿意,請編輯您的問題,並明確解釋。親愛的 –

回答

0

您必須創建自定義端點。

舉例來說,如果你想要一個特定類別中過濾所有的帖子,你應該這樣做

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

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

    return $posts[0]->post_title; 
} 

,那麼你必須添加一個動作來註冊你的終點呼叫

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

,那麼你將得到像這樣的東西

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

瞭解更多信息和更好理解ING,我建議你閱讀這篇參考: http://v2.wp-api.org/extending/adding/

這篇文章也可以給你更多的例子:https://webdevstudios.com/2015/07/09/creating-simple-json-endpoint-wordpress/https://deliciousbrains.com/wp-rest-api-customizing-endpoints-adding-new-ones/

注:我寫的飛行這一代碼,這應該需要更加努力地工作。

+0

謝謝你的幫助Majid,我想我明白了,但是明天當我的大腦不那麼疲憊時,你會通過你建議的鏈接進一步閱讀。 – emdav43

+0

偉大如果你的工作,並看到它爲你工作,請在這裏留下評論,並接受這個答案,希望它會幫助其他人以後。 – Majid