2016-03-10 2 views
0

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

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

// 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: {
"ИД": 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 делать 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, "guid": "http://raphaelk.co/api/? post_type = Imóveis & р = 149" , "menu_order": 0, "post_type": "Imóveis", "post_mime_type": "", "COMMENT_COUNT": "0", "фильтр": "сырой" },

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

Спасибо

ответ

1

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

В функции «Busca», после того, как 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); 
    } 
} 

Надеется, что будет это делать!

+0

Это сработало! Большое спасибо! –

+0

@RaphaelKoszalka Счастливые помочь! Не забудьте принять ответ. ;) – qbeauperin

+0

Извините, я забыл сделать это в первый раз. Выполнено, ответ принят! –

Смежные вопросы