Я пытаюсь создать REST API для моего веб-сайта WordPress, который используется для перечисления средств с помощью плагина WordPress Job Manager.
Я зарегистрировал свой собственный пост, таксономии в \ plugins \ rest-api \ plugin.php.
API ниже дает мне все списки с ответом по умолчанию.
HTTP: // локальный / спорт / сор-JSON / шр / v2 / joblisting /
Я хотел добавить пост мета в ответ JSON, используя приведенный ниже код.
function slug_register_phone_number() {
register_rest_field( 'job_listing',
'phone',
array(
'get_callback' => 'slug_get_phone_number',
'update_callback' => null,
'schema' => null,
)
);
}
function slug_get_phone_number($post, $field_name, $request) {
return get_post_meta($post->id, '_phone' );
}
}
Используя приведенный выше код, я могу добавить «телефон» в качестве ответа REST, но я всегда получаю телефон = ложь в ответ. Не отображаются правильные данные из таблицы wp_postmeta.
Я перешел по ссылкам ниже для справки.
http://v2.wp-api.org/extending/modifying/
Подключите детали. 1. WP Job Manager 2. Rest-API
Любая помощь будет действительно полезна.
источник
Ответы:
$post
в функции обратного вызова это массив, а не объект. Таким образом, вы не можете использовать$post->id
. Измените его на$post['id']
и оно должно работать:Я рекомендую изменение
_phone
кphone_number
или что - то еще без подчеркивания префикса. Потому_
что часто используется с закрытыми мета-ключами. Попробуйте добавить настраиваемое поле, которое имеет мета-ключ с_
префиксом, прямо к вашему сообщению, вы поймете, что я имел в виду.источник
В WP API есть
rest_prepare_post
фильтр (или,rest_prepare_CPT
если вы работаете с пользовательскими записями), который вы можете использовать для изменения ответа JSON. В вашем случае это будетrest_prepare_joblisting
.Используя тот же фильтр, вы также можете удалять поля / данные из ответа и выполнять любые манипуляции с данными.
источник
Просто добавьте эти методы в function.php
источник
Вот пример ООП:
источник