wpdb e acf via wp rest api

Eu fiz um nó de extremidade personalizado com o wp rest api para

/wp-json/dn/locations

que, por sua vez, executa a seguinte consulta wpdb

 $sql = "SELECT * FROM wp_posts p WHERE p.post_type = 'location' AND p.ID = 133;"; $results = $wpdb->get_results($sql); 

O que retorna bem, mas infelizmente meus campos ACF não estão aparecendo lá. Existem algumas poucas consultas que estou fazendo e isso vai se transformar em uma bagunça rapidamente se eu tiver que perseguir todos os campos à mão. Existe uma maneira mais fácil de obter postagens com todos os campos ACF anexados?

Solutions Collecting From Web of "wpdb e acf via wp rest api"

Acabei usando $ wpdb para minhas tabelas personalizadas e fui com wp_query para minhas postagens personalizadas com campos ACF

  $q = new WP_Query(array( 'post_type' => 'coupon', 'post__in' => $cids )); $coupons = array(); while($q->have_posts()) : $q->the_post(); $p = get_post(); $f = get_fields(); $m = array_merge((array)$p, (array)$f); array_push($coupons, $m); endwhile; 

E é assim que o biscoito desmorona.

 function wpse187543_register_acf() { $post_types = get_post_types( arrray( 'public' => true ), 'names' ); foreach ( $post_types as $type ) { register_api_field( $type, 'acf', array( 'get_callback' => 'wpse187543_get_acf', 'update_callback' => null, 'schema' => null, )); } } add_action( 'rest_api_init', 'wpse187543_register_acf' ); function wpse187543_get_acf( $object, $field_name, $request ) { return get_fields( $object['id'] ); } 

Isso adiciona uma chave chamada “acf” para a saída de api restante para todos os tipos de postagem pública. Você pode personalizar a lista de tipos de postagem, é claro. Além disso, existem alguns plugins que lidam com o trabalho.