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 выше), чтобы перейти на страницу «Что включено», и на этой странице используйте имя события из URL-адреса в качестве параметра во втором вызове API выше. Но WordPress просто ищет категорию и название поста из-за формата URL, который не существует, поэтому я просто получаю 404.

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

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+)

для получения дополнительной информации и лучшего понимания, я предлагаю вам прочитать эту ссылку:
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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]