Как я могу получить все сообщения из определенного пользовательского типа сообщений с помощью WP REST API (v1 или v2)? Я очень новичок в этом и пытаюсь понять, как это сделать.
В настоящее время я использую WP REST API v2, и мне удалось получить список всех типов записей с этим
http://domain.com/wp-json/wp/v2/types
а затем удалось получить тип сообщения, в котором я заинтересован с
http://domain.com/wp-json/wp/v2/types/the-icons-update
Как я могу получить все сообщения из этого конкретного типа контента?
Я пробовал с
http://domain.com/wp-json/wp/v2/posts?filter[post_type]=the-icons-update
Но он возвращает пустой массив (я полагаю, он возвращает сообщения по умолчанию, и на моем сайте есть только сообщения внутри пользовательского типа сообщений, которые я пытаюсь получить).
Может ли быть проблема с тем, как я зарегистрировал тип сообщения?
function custom_post_type() {
$labels = array(
'name' => _x( 'The Icons Update', 'post type general name' ),
'singular_name' => _x( 'The Icons Update', 'post type singular name' ),
'add_new' => _x( 'Add Page', 'magazine' ),
'add_new_item' => __( 'Add New Page' ),
'edit_item' => __( 'Edit Page' ),
'new_item' => __( 'New Page' ),
'all_items' => __( 'All Pages' ),
'view_item' => __( 'View Page' ),
'search_items' => __( 'Search Pages' ),
'not_found' => __( 'No Page found' ),
'not_found_in_trash' => __( 'No Page found in the Trash' ),
'parent_item_colon' => '',
'menu_icon' => '',
'menu_name' => 'The Icons Update'
);
$args = array(
'labels' => $labels,
'description' => 'Holds our projects and project specific data',
'public' => true,
'menu_position' => 5,
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'custom-fields' ),
'has_archive' => true,
'taxonomies' => array('post_tag', 'category'),
'hierarchical' => false,
'query_var' => true,
'queryable' => true,
'searchable' => true,
'rewrite' => array( 'slug' => 'the-icons-update' )
);
register_post_type( 'magazine', $args );
flush_rewrite_rules();
}
add_action( 'init', 'custom_post_type' );
Любая помощь с этим действительно ценится.
Существует действительно простой и удобный способ для v.2. Все, что вам нужно сделать, это включить в свой args
массив следующее свойство: 'show_in_rest' => true
Пример:
register_post_type( 'recipe',
array(
'labels' => $labels,
'public' => true,
'menu_position' => 5,
'hierarchical' => false,
'supports' => $supports,
'show_in_rest' => true,
'taxonomies' => array('recipe-type', 'post_tag'),
'rewrite' => array( 'slug' => __('recipe', 'recipe') )
)
);
register_post_type («имя типа записи» …), а не имя «add_new».
Измените название вашего типа сообщения на Журнал и проверьте результат. Надеюсь, поможет.
Вернувшись к v1 плагина REST API и нажав /wp-json/posts?type=name-of-post-type
Мне удалось получить сообщения из этого конкретного типа сообщения.
Чтобы использовать v2 плагина REST API:
в functions.php файл вашей темы, добавьте следующее, чтобы создать конечную точку отдыха:
add_action( 'init', 'add_myCustomPostType_endpoint');
function add_myCustomPostType_endpoint(){
global $wp_post_types;
$wp_post_types['myCustomPostType']->show_in_rest = true;
$wp_post_types['myCustomPostType']->rest_base = 'myCustomPostType';
$wp_post_types['myCustomPostType']->rest_controller_class = 'WP_REST_Posts_Controller';
}
Теперь у вас должна быть следующая конечная точка для запроса:
/wp-json/wp/v2/myCustomPostType
myCustomPostType пользовательский тип записи, который вы зарегистрировали. «Rest_base» не обязательно должен совпадать с именем вашего пользовательского типа записи.
Скорее всего, вы захотите добавить дополнительные поля, относящиеся к вашему пользовательскому типу записи, такие как метаданные публикации или, возможно, из Расширенные пользовательские поля плагин. Для этих сценариев вы можете включить эти свойства, добавив такой фрагмент в свой functions.php файл:
function add_myCustomPostType_fields_url_to_myCustomPostType_request( $data, $post, $request ) {
$_data = $data->data;
$customImageProperty = get_field('customImageProperty');
$_data['customImageProperty'] = $customImageProperty['url'];
$data->data = $_data;
return $data;
}
add_filter( 'rest_prepare_myCustomPostType', 'add_myCustomPostType_fields_url_to_myCustomPostType_request', 10, 3 );