Le daré una pequeña respuesta a su actualización, haciendo esto con la API de WP . La API tiene la posibilidad de usar WP_Query como también en core, pero acerca de los parámetros get en la url.
Una URL para extraer contenido del 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á acostumbrado, puede hacerlo así:
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 obtener esos datos le resulta familiar WP_Query
para un bucle estándar de WordPress. Si no especifica un parámetro, WP_Query
se utilizarán los valores predeterminados para .
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 todos los parámetros posibles.
Pero la nueva versión se lanzará en días, semanas. Y vea este tema para discutir sobre una solución para esta consulta de fecha. Alternativa use un filtro personalizado a través del 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 a 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 de manera tranquila 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 .