2016-08-24 3 views
0

Я установил Wordpress API на веб-сайты нашей компании, чтобы мы могли извлекать данные из него для отображения на новом веб-сайте компании. Что касается захвата и отображения исходных данных, все работает отлично (сообщения из определенной категории с исходного сайта на определенную страницу на новом веб-сайте).Wordpress API - ссылка на полный список сообщений из списка сообщений

Это для событий, которые вводятся на странице «Что дальше» на существующем веб-сайте, который проходит в баре/ресторане. Новый сайт предназначен исключительно для событий и для сохранения необходимости добавлять/изменять события на обоих сайтах, мы думали, что лучше использовать 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); 

Что я могу» Тренируйтесь, как это сделать, создайте «дружественный» URL-адрес нового сайта, который затем перейдет на страницу, которая вызывает функцию, чтобы получить отдельные данные о сообщении.

Например, я хочу, чтобы URL-адрес http://eventdomain.com/whats-on/event-name (в списке сообщений о событиях, захваченных первым вызовом API), чтобы перейти на страницу What's On и на этой странице используйте имя-событие из URL-адреса в качестве параметра в Второй вызов API выше. Но Wordpress просто ищет категорию и название сообщения из-за формата URL-адреса, которого нет, поэтому я просто получаю 404.

Что мне не хватает?

+0

Вы можете использовать копию исходной базы данных для нового проекта, просто изменив исходный URL-адрес и адрес администратора. Попробуй это. –

+0

Спасибо, но я не хочу использовать копию исходной базы данных, иначе я бы это сделал, это не значит, что я использую API. Это другой веб-сайт для другой части бизнеса с одним, это то же самое, а не вводить его дважды каждый раз, когда появляются новые сообщения, которые мы должны добавлять или обновлять только на одном сайте. – emdav43

+0

Я думаю, что его трудно справиться. Единственный способ для этого - вы должны отследить данные сообщения из исходной базы данных сайта по запросу mysql connection из wp_post и wp_postmeta. Здесь вы сделали все, что угодно, как удалить, добавить сообщение и т. Д. @ 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

Благодарим вас за помощь. Маджид, я думаю, что получаю эту идею, но завтра буду читать ваши предложенные ссылки, когда мой мозг будет менее измотан. – emdav43

+0

Отлично, если вы работали над этим и видите, что он работает для вас, пожалуйста, оставьте здесь комментарий и примите этот ответ, надейтесь, что он поможет другим. – Majid