8

Как я могу получить все сообщения определенного типа сообщений с помощью WP REST API (либо v1, либо v2)? Я очень новичок в этом и пытаюсь понять, как это сделать.WP REST API fetch posts from post type

настоящее время я использую 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'); 

Любая помощь с этим действительно ценится.

ответ

5

Существует очень застрелены и простой способ для 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')) 
    ) 
); 
+0

Где я могу добавить это? Благодарю. – Si8

+0

@ Si8 в файле 'functions.php';) –

+0

Я хочу включить только идентификатор сообщения, и все. Будет ли выше работа? Я могу открыть новый вопрос, если это оправдано. Спасибо – Si8

2

register_post_type ('name of post type' ...) не имя 'add_new'. Измените имя своего типа сообщения в журнале и проверьте результат. Надеюсь, поможет.

+0

Спасибо, я сделал это изменение, но, к сожалению, не решить мою проблему.Я вернулся к v1 плагина REST API и с http://domain.com/wp-json/posts?type=magazine Мне удалось получить сообщения из этого конкретного типа сообщения. Спасибо – Jeff

2

Вернувшись обратно в v1 плагина API REST и с /wp-json/posts?type=name-of-post-type Мне удалось получить сообщения из этого конкретного типа сообщения.

2

Чтобы использовать 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 быть каст om, который вы зарегистрировали. «Rest_base» не должен совпадать с именем вашего настраиваемого типа сообщений.

Скорее всего, вы захотите добавить дополнительные поля, специфичные для вашего настраиваемого типа сообщений, такие как почтовые метаданные или, возможно, из плагина Advanced Custom Fields. Для этих сценариев, вы можете включить эти свойства, добавив фрагмент кода, как это ваш 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); 
Смежные вопросы