Если я правильно ответил на ваш вопрос, вы хотите получать сообщения произвольного типа с помощью REST API.
Вам необходимо указать show_in_rest
и public
в аргументах при создании настраиваемый тип сообщения в wordpress.
add_action( 'init', 'my_cpt' );
function my_cpt() {
$args = array(
'public' => true,
'show_in_rest' => true,
'label' => 'My Custom Post'
);
register_post_type( 'mycustompost', $args );
}
Подробнее об этом: https://developer.wordpress.org/rest-api/extending-the-rest-api/adding-rest-api-support-for-custom-content-types/
Установив это, вы можете получать сообщения типа сообщения с помощью правильные параметры в URL.
Итак, если вы просто хотите получать сообщения, вы можете использовать:
https://yoursite.com/wp-json/wp/v2/mycustompost?per_page=10
Я бы предложил установить per_page
, чтобы контролировать, если вы получаете много сообщений.
Вы также можете получить доступ к большему количеству данных без дополнительных HTTP-запросов, используя _embed
https://yoursite.com/wp-json/wp/v2/mycustompost?per_page=10&_embed=wp:term,wp:featuredmedia
Например, с этим вы получаете термины таксономии и URL-адреса различных избранных изображений размеры.
Таким образом, вам не нужно получать все сообщения (и типы сообщений) вашего веб-сайта, а затем фильтровать их по типу сообщений, а просто получать сообщения этого типа. Вы можете выполнить дополнительную фильтрацию, используя глобальные параметры:
https://developer.wordpress.org/rest-api/using-the-rest-api/global-parameters/
С VueJS (на мой взгляд, лучшая производительность) это будет выглядеть примерно так:
fetch("https://yoursite.com/wp-json/wp/v2/mycustompost?per_page=10")
.then(response => response.json())
.then((data => {
this.mycustompost = data;
}))
Или при использовании стандартного javascript что-то вроде:
let state = {
posts: [],
baseUrl: 'https://yoursite.com/wp-json/wp/v2/mycustompost',
perPage: '?per_page=10',
wpFetchHeaders: {
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Expose-Headers': 'x-wp-total'
}
}
}