los datos devueltos desde get_post ($ postId) tienen claves diferentes a wp-json / wp / v2 / posts / {postId}

2

WordPress Devs. Soy nuevo en WordPress y desarrollo web. Hasta ahora WordPress Rest API v2 funciona bien. Estaba escribiendo una API / ruta / punto final personalizado para mi proyecto usando la siguiente función.

 get_post($postId);

Aquí las claves que se devuelven como respuesta son principalmente ID, post_autor, posfechar, post_date_gmt, Publicar Contenido, título de la entrada, post_excerpt, estado post comment_status.

Sin embargo, las claves obtenidas de enlace son diferentes del objeto de publicación de API personalizado principalmente ID fecha, fecha_gmt, guid modificado, estado, enlazar, título.

No hay ningún problema en serializar la respuesta. Solo quiero saber si hay alguna alternativa a dicho problema para que no haya ambigüedad en las claves para los dos casos, aparte de cambiar el nombre de las claves en $ post objeto de un punto final personalizado.

    
pregunta Killer 28.07.2017 - 02:32

2 respuestas

2

Puede configurar sus propias claves en la matriz de respuesta JSON. Puede ser cualquier cosa. Eche un vistazo a este sencillo ejemplo:

add_action( 'rest_api_init', function () {
    register_rest_route( 'shubham', '/get_the_post/', array(
            'methods' => 'GET', 
            'callback' => 'get_posts_by_rest' 
    ) );
});
// Callback function
function get_posts_by_rest( ){
    // Get the post id from the URL and validate it
    if( isset( $_REQUEST['post_id'] ) && filter_var( $_REQUEST['post_id'] , FILTER_VALIDATE_INT ) ) {
        $id = abs( $_REQUEST['post_id'] );
    } else {
        return __('Please enter a post ID.','text-domain');
    }
    // Fetch the post
    $post = get_post( $id );
    // Check if the post exists
    if( $post ) {
        // Now, form our own array
        $data = array();
        $data['id'] = $post->ID;
        $data['date'] = $post->post_date;
        $data['date_gmt'] = $post->post_date_gmt;
        $data['guid'] = $post->guid;
        $data['modified'] = $post->post_modified 
        $data['modified_gmt'] = $post->post_modified_gmt;
        $data['slug'] = $post->post_name;
        $data['status'] = $post->post_status;
        $data['title'] = $post->post_title;
        $data['content'] = $post->post_content;
        $data['excerpt'] = $post->post_excerpt;
        // Add the rest of your content

        // Return the response
        return $data;
    } else {
        return __('Invalid post ID','text-domain');
    }
}

Ahora, al visitar /wp-json/shubham/get_the_post?post_id=123 verá la misma estructura que el wp-json/wp/v2/posts predeterminado para la publicación que tiene un ID de 123.

    
respondido por el Jack Johansson 28.07.2017 - 06:28
2

Para agregar a la respuesta de @jack, proveniente del punto de vista de alguien a quien realmente le disgusta la API JSON de wordpress, sugiero que no la use si no cumple con sus necesidades. Escribir su propio punto final no es complejo y garantiza que obtenga el formato de los datos exactamente de la misma forma que lo necesita, sin interferir con la API central que podría tener otros clientes que esperan que las respuestas estén en un formato "vanila".

    
respondido por el Mark Kaplun 28.07.2017 - 06:42

Lea otras preguntas en las etiquetas