WordPress Зарегистрируйте новое поле REST

Опубликовано: 23 Февраля, 2023

Регистрация нового поля rest в вашем ответе API делает ваш API более подробным. Вам не нужно создавать другую конечную точку для получения этих значений.

Допустим, вы работаете с постами WordPress. По умолчанию WordPress предоставляет все необходимые данные в ответе после API. Но что, если вы хотите добавить другие данные, например, ваши собственные данные интеграции или сторонние данные интеграции? В это время мы можем зарегистрировать новое поле REST в объекте.

См. приведенный ниже пример. Мы зарегистрировали имя поля post-meta-fields в нашем ответе на сообщение:

Шаги для регистрации нового поля rest: Вы должны добавить этот код в файл functions.php темы.

Шаг 1: Создайте функцию, которая регистрирует поле REST с помощью функции register_rest_field().

Первый параметр этой функции — это имя объекта, которое означает, в какой объект вы хотите добавить поля REST, такие как сообщение, термин, комментарий и т. д. Второй параметр — это имя поля, которое вы хотите сохранить. Третий параметр — это массив аргументов, таких как функция обратного вызова и схема.

PHP




<? php
function register_all_post_meta_field() {
  
    register_rest_field(
        "post", // Object post|term|comment etc.
        "post-meta-fields", // Name of field
        array(
            "get_callback"    => "get_all_post_meta", // Callback function
            "schema"          => null, // Schema for the field
        )
    );
}
?>

Шаг 2: Создайте функцию обратного вызова get_all_post_meta() .

В этой функции мы добавим наш пользовательский код, например, то, что мы хотим показать в поле пост-мета-полей . Значение может быть любым, например целым числом, строкой, массивом и т. д.

PHP




<?php
/* Callback function */
function get_all_post_meta( $object ) {
  
    // get the id of the post object array.
    $post_id = $object["id"];
  
    // return the post meta.
     return get_post_meta( $post_id );
}
?>

Шаг 3: Добавьте хук действия rest_api_init , который будет запускать нашу функцию register_all_post_meta_field при инициализации REST API в WordPress.

PHP




<?php
    add_action( "rest_api_init", "register_all_post_meta_field" );
?>

Полный код: ниже приведены все шаги в одном кадре.

PHP




<? php
/* Register REST field */
add_action("rest_api_init", "register_all_post_meta_field");
function register_all_post_meta_field() {
  
    register_rest_field(
        "post", // Object post|term|comment etc.
        "post-meta-fields", // Name of field
        array(
            "get_callback"    => "get_all_post_meta", // Callback function
            "schema"          => null, // Schema for the field
        )
    );
}
  
/* Callback function */
function get_all_post_meta($object) {
  
    // get the id of the post object array.
    $post_id = $object["id"];
  
    // return the post meta.
    return get_post_meta($post_id);
}
?>

Выход:

Надеюсь, это будет полезно!