WP_Query resulta en forma de Rest API API

6

Esta es una matriz de resultados de publicaciones simples.

$query = new WP_Query( array( 'post_type' => 'post' ) );
$posts = $query->posts; // returns simple array of data

¿Hay una manera de obtener los resultados de wp-json / wp / v2 / posts /? _ incrustar sin hacer una solicitud adicional al servidor para extraer json y luego decodificar a php array?

Buscando algo así:

$posts = $query->rest_posts(); // for example ??
    
pregunta Janiis 17.01.2018 - 12:17

3 respuestas

4

Creo que podemos simplificarlo con:

$request  = new WP_REST_Request( 'GET', '/wp/v2/posts' );
$response = rest_do_request( $request );
$data     = rest_get_server()->response_to_data( $response, true );

utilizando rest_do_request() .

    
respondido por el birgire 17.01.2018 - 16:25
0

$ query = new WP_Query (array ('post_type' = > 'post'));

$ posts = $ query- > posts; // devuelve una matriz simple de datos

¿Hay una manera de obtener los resultados de wp-json / wp / v2 / posts /? _ incrustar sin hacer una solicitud adicional al servidor para extraer json y luego decodificar a php array?

Buscando algo así:

$ posts = $ query- > rest_posts (); // por ejemplo ??

    
respondido por el Dharmishtha Patel 19.01.2018 - 07:01
0

Después de excavar en el código fuente terminó con esta solución. Funciona para mí, podría ser útil para otros también.

function get_rest_items_query($post_type, $posts_per_page, $orderby = 'date', $order = 'desc') {

    $result = array();
    $args = array( 'post_type' => $post_type, 'posts_per_page' => $posts_per_page, 'orderby' => $orderby, 'order' => $order );
    $posts = get_posts($args);

    $ids = implode(',', wp_list_pluck($posts, 'ID'));

    // request
    $restRequest = new WP_REST_Request('GET', '/wp/v2/' . $post_type  );
    $restRequest->set_param('include', $ids);
    // response
    $response = rest_do_request( $restRequest );
    // _embed
    $rest = rest_get_server()->response_to_data( $response, true );

    $result['posts'] = $rest;

    return $result;
}
    
respondido por el Janiis 17.01.2018 - 16:07

Lea otras preguntas en las etiquetas