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 .