Можете ли вы установить настраиваемое поле в новом сообщении через REST API без использования каких-либо плагинов? - PullRequest
0 голосов
/ 19 июня 2020

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

Я просмотрел документацию и не знаю Я не вижу для этого поддержки. Похоже, вам нужно добавить его самостоятельно (не говорит, где) или что отправлять в вызове REST:

https://developer.wordpress.org/rest-api/extending-the-rest-api/modifying-responses/#working -with-registration-meta-in-the-rest- api

Я искал плагины и не нашел ни одного, которые бы это сделали. Я видел плагины, которые позволяют возвращать метаданные, но все эти руководства устарели.

Есть ли способ вставить метаданные при создании или обновлении нового сообщения без использования плагина или изменения исходного кода?

var results = await fetch(url, {
    method: "POST",
    headers:{
        'Content-Type': 'application/json',
        'accept': 'application/json'
    },
    body: JSON.stringify({
        title: "My Post",
        content: "Hello world!",
        status: 'publish',
        meta: {
            name:"favoriteColor", 
            value: "blue"
        }
    })
})

Приведенный выше код работает для создания сообщения, но не создает настраиваемые поля.

1 Ответ

0 голосов
/ 20 июня 2020

Из руководства похоже, что чтение и запись настраиваемых полей не поддерживаются из коробки.

register_meta используется для внесения в белый список существующего настраиваемого мета-значения для доступа через REST API. Если для параметра show_in_rest мета-поля установлено значение true, значение этого поля будет отображаться в .meta-ключе в ответе конечной точки, и WordPress будет обрабатывать настройку обратных вызовов для чтения и записи в этот мета-ключ .

Итак, вам нужно добавить php, чтобы зарегистрировать мета-ключ, и тогда он будет доступен для чтения и записи.

На той же странице есть этот пример кода:

<?php
// The object type. For custom post types, this is 'post';
// for custom comment types, this is 'comment'. For user meta,
// this is 'user'.
$object_type = 'post';
$meta_args = array( // Validate and sanitize the meta value.
    // Note: currently (4.7) one of 'string', 'boolean', 'integer',
    // 'number' must be used as 'type'. The default is 'string'.
    'type'         => 'string',
    // Shown in the schema for the meta key.
    'description'  => 'A meta key associated with a string meta value.',
    // Return a single value of the type.
    'single'       => true,
    // Show in the WP REST API response. Default: false.
    'show_in_rest' => true,
);

register_meta( $object_type, 'my_meta_key', $meta_args );

Вы можете поместить это на свою theme_functions страницу. См. Внешний вид> Редактор тем.

enter image description here

Then in your code you send it defining the meta property and using a name value pair; the name of the key and it's value.

var results = await fetch(url, {
    method: "POST",
    headers:{
        'Content-Type': 'application/json',
        'accept': 'application/json',
        'Authorization': 'Bearer '+ token
    },
    body: JSON.stringify({
        title: pageTitle,
        content: markupOutput,
        status: 'publish',
        meta: {
            my_meta_key: "test"
        }
    })
})

Example Code:
https://developer.wordpress.org/rest-api/extending-the-rest-api/modifying-responses/#read -and-write-a-post-meta-field-in-post-answers

Документация: https://developer.wordpress.org/rest-api/extending-the-rest-api/modifying-responses/#using -register_rest_field-vs-register_meta

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