Публикация на удаленном сайте WordPress для создания пользовательских типов сообщений - PullRequest
0 голосов
/ 13 апреля 2020

Я использую WordPress REST API и пытаюсь опубликовать сообщение на удаленном веб-сайте WordPress, но, похоже, оно не отправляется на мой зарегистрированный пользовательский тип записи «clothes».

Вот код:

$api_response = wp_remote_post( 'https://example.com/wp-json/wp/v2/posts', array(
'headers' => array(
    'Authorization' => 'Basic ' . base64_encode( 'admin:5mMcJGUGNFYq9PxU5P0ad0Np' )
),
'body' => array(
    'title'         => 'Pink Shirt',
    'status'        => 'publish',
    'post_type'     => 'clothes',
    'categories'    => 2,
    'slug'          => 'pink-shirt',
    'meta'          => array('amount' => '12.50', 'style' => 'petite', 'size' => 'small', 'gender' => 'ladies', 'author' => 1)
)
));

Пост действительно создается на удаленном веб-сайте, но всегда заканчивается как стандартный пост (и он появляется со всеми остальными постами), а не как пользовательский тип поста «clothes».

Я пробовал и это ...

    'post_type' => 'clothes',

... и это ...

    'type' => 'clothes',

... но это один и тот же результат.

Что я делаю не так?

Я трижды проверил, и 'clothes' - это зарегистрированный тип записи с параметром 'show_in_rest', установленным в true.

1 Ответ

1 голос
/ 13 апреля 2020

Согласно документации , https://example.com/wp-json/wp/v2/posts должно быть https://example.com/wp-json/wp/v2/[custom-post-type-slug-here] вместо:

При регистрации пользовательского типа записи, если вы хотите, чтобы он был доступен через REST API вы должны установить 'show_in_rest' => true в аргументах, передаваемых register_post_type. Если для этого аргумента установлено значение true, маршрут будет добавлен в пространство имен wp/v2.

При желании вы можете установить аргумент rest_base, чтобы изменить базовый URL-адрес, в противном случае по умолчанию будет использоваться имя типа записи. В приведенном ниже примере «книги» используется в качестве значения rest_base. Это сделает URL для маршрута wp-json/wp/v2/books вместо wp-json/wp/v2/book/, который был бы по умолчанию.

Итак, если вы не используете параметр rest_base, URL вы должны использовать в своем запросе POST вместо https://example.com/wp-json/wp/v2/clothes.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...