Добавление ACF к конечным точкам CUSTOM wp api

Я пишу пользовательскую конечную точку для WP API, чтобы извлекать сообщения из WordPress, например, из «real_estate» post_type и вместимостью для «5 или более» человек.

Я построил новую пользовательскую конечную точку:

// permite que meta_key e meta_value
// sejam filtrados pela api
function filtros( $valid_vars ) {
$valid_vars = array_merge(
$valid_vars,
array(
'meta_key',
'meta_value' ) );
return $valid_vars;
}
add_filter( 'rest_query_vars', 'filtros' );
// funcção que retorna posts do autor
function busca( $data ) {
$posts = get_posts(array(
'post_type' => 'imoveis',
'posts_per_page'    =>  '1000',
'meta_query'    => array(
'relation'  =>  'AND',
array(
'key'   =>  'transacao',
'value' => $data['tipo']
),
array(
'key'   =>  'quartos',
'value' => $data['quartos'],
'compare'   =>  '>'
)
)
));

if ( empty( $posts ) ) {
return new WP_Error( 'sem resultados', 'quartos: ' . $data['quartos'] . ' transacao: '. $data['tipo'], array( 'status' => 404 ) );
}
return $posts;
}
// cria o endpoint que ira receber a função acima
add_action( 'rest_api_init', function () {
register_rest_route( 'busca/v2', '/resultado/(?P<tipo>.+)/(?P<quartos>\d+)',
array(
'methods' => 'GET',
'callback' => 'busca',

)
);
});

Поиск в порядке, он работает, я фильтрую по типу транзакции (продажа или аренда) и количество комнат в каждой недвижимости.

Но в моем ответе JSON отсутствует множество полей, включая ACF.
EX:
{
«ID»: 149,
«Post_author»: «2»,
«post_date»: «2016-03-03 23:53:39»,
«post_date_gmt»: «2016-03-03 23:53:39»,
«POST_CONTENT»: «»,
«post_title»: «Oportunidade do Ano»,
«Post_excerpt»: «»,
«Post_status»: «опубликовать»,
«Comment_status»: «закрыто»,
«Ping_status»: «закрыто»,
«Post_password»: «»,
«POST_NAME»: «oportunidade-ду-ано»,
«To_ping»: «»,
«Свистел»: «»,
«post_modified»: «2016-03-03 23:53:39»,
«post_modified_gmt»: «2016-03-03 23:53:39»,
«Post_content_filtered»: «»,
«Post_parent»: 0,
«Справы»: «http://raphaelk.co/api/?post_type=imoveisp=149»,
«Menu_order»: 0,
«Post_type»: «Imóveis»,
«Post_mime_type»: «»,
«COMMENT_COUNT»: «0»,
«Фильтр»: «сырой»},

Ребята, у вас есть идеи, как я могу изменить этот ответ? И включить ACF к нему.

Спасибо

0

Решение

Вы пытались просто использовать функцию ACF get_fields ?

В вашей функции «буска», после get_posts(), если $posts не пусто, получить поля ACF для каждого сообщения, как это:

if ( empty( $posts ) ) {
return new WP_Error( 'sem resultados', 'quartos: ' . $data['quartos'] . ' transacao: '. $data['tipo'], array( 'status' => 404 ) );
} else {
foreach ($posts as $key => $post) {
$posts[$key]->acf = get_fields($post->ID);
}
}

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

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector