0

我正在为 WP API 编写一个自定义端点,以从 wordpress 中检索帖子,例如来自“real_estate”帖子类型和“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。前任: {
“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-do-ano”,“to_ping”:“”,“pinged”:“”,“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=imoveis&p=149”、“ menu_order":0, "post_type":"imoveis", "post_mime_type":"", "comment_count":"0", "filter":"raw" },“0”,“过滤器”:“原始”},“0”,“过滤器”:“原始”},

你们知道我该如何改变这种反应吗?并将 ACF 包含在其中。

谢谢

4

1 回答 1

2

您是否尝试简单地使用 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);
    }
}

希望那会做到!

于 2016-03-13T21:59:24.140 回答