Mostrar publicación popular en otro sitio web de php a través de WP REST JSON API

9

Necesito mostrar popular & publicaciones recientes en otro sitio web de PHP bajo el mismo dominio.

Ejemplo:

  1. www.example.com - > sitio web principal (php, mysql)
  2. www.example.com/blog - > Blog de WordPress

Es necesario mostrar publicaciones populares y recientes de blog en el sitio web principal.

Tenga en cuenta que el blog y el sitio web principal utilizan dos bases de datos independientes.

Decidí usar el complemento WP REST JSON API para eso. Ahora tengo otra pregunta.

Uso el siguiente código para recuperar la publicación popular de la semana pasada. Lo que realmente necesito es obtener estos mismos datos a través de la llamada a la API.

$args = array(
    'date_query' => array( array( 'after' => '1 week ago' ) ),  
    'posts_per_page' => $recent_posts_count,
    'ignore_sticky_posts' => 1,
    'meta_key' => 'post_views_count',
    'orderby' => 'meta_value_num',
    'order' => 'DESC'
);
$popularposts = new WP_Query( $args );

¿Cómo puedo hacer eso?

    
pregunta Janith Chinthana 28.04.2015 - 12:14

1 respuesta

8

Le daré una pequeña respuesta a su actualización, haciendo esto con la WP API . La API tiene las posibilidades de usar WP_Query como también en el núcleo, pero sobre los parámetros de obtención en la url.

Una URL para extraer contenido de Estado de publicación se vería así:

http://example.com/wp-json/posts

Para extraer contenido con los parámetros WP_Query a los que estás acostumbrado, puedes hacerlo de esta manera:

http://example.com/wp-json/posts?filter[posts_per_page]=2&filter[order]=ASC

Puede crear su consulta personalizada con todos los parámetros también en la url. Puede ver cómo el método para capturar esos datos le resulta familiar al usar WP_Query para un bucle de WordPress estándar. Si no especifica un parámetro, se utilizarán los valores predeterminados de WP_Query .

El resultado es json, que puede analizar y usar para su sitio externo.

Consulte también el sitio de la API para obtener más parámetros y documentación.

Actualización para date_query

La API no puede crear un resultado para una consulta como query_date . Consulte la documentación para ver todos los parámetros posibles.

Pero la nueva versión se lanzará en días, semanas de visualización. Y vea este problema para obtener información sobre una solución para esta consulta de fecha. Alternativamente, use un filtro personalizado a través de gancho, como:

// Allow datequery in /posts filter
add_filter( "json_query_vars", function( $query_args ) {
    return array_merge( $query_args, 
        array( "date_query" => array( array( "after" => "1 week ago" ) ) )
    );
} );

Actualización para meta_query

La API no puede también esta característica de la consulta WP predeterminada. Pero puede usar un gancho para mejorar la API de este requisito. También aquí un pequeño ejemplo.

add_filter('json_query_var-meta_query', 'add_meta_query', 10, 1);

function add_meta_query( $data ){

    $args = array();
    $args['relation'] = 'AND';

    foreach ( $data as $key => $value ) {
        if ( 'relation' === $key ) {
            $args['relation'] = $data['relation'];
        }

        if ( substr($key, 0, 3) === 'key' ) {
            $arg_num = substr( $key, 3 );
            $args[ (int) $arg_num ][ 'key' ] = $value;
        }

        if (  substr( $key, 0, 7 ) === 'compare' ) {
            $arg_num_comp = substr( $key, 7 );
            $args[ (int) $arg_num_comp ][ 'compare' ] = $value;
        }
    }

    return $args;
}

Ahora, puedo llamar a JSON tranquilo para imitar el filtro de publicaciones Wp_query que ya está en el servidor:

?filter[meta_query][key]=_newsml_categories_newsstream&filter[meta_query][key2]=homepage&filter[meta_query][relation]=AND&filter[meta_query][compare]=NOT%20EXISTS&filter[meta_query][compare2]=NOT%20EXISTS

La actualización de la meta consulta basada en esta respuesta .

    
respondido por el bueltge 28.04.2015 - 15:46

Lea otras preguntas en las etiquetas