Je vais vous donner une petite réponse à votre mise à jour, en faisant cela avec l' API WP . L'API a la possibilité d'utiliser le WP_Query comme aussi dans le noyau, mais sur les paramètres get dans l'url.
Une URL pour extraire le contenu du statut de publication ressemblerait à ceci:
http://example.com/wp-json/posts
Pour extraire du contenu avec les paramètres WP_Query auxquels vous êtes habitué, vous pouvez le faire comme ceci:
http://example.com/wp-json/posts?filter[posts_per_page]=2&filter[order]=ASC
Vous pouvez créer votre requête personnalisée avec tous les paramètres également dans l'URL. Vous pouvez voir comment la méthode pour récupérer ces données semble familière à utiliser WP_Query
pour une boucle WordPress standard. Si vous ne spécifiez aucun paramètre, les valeurs par défaut WP_Query
seront utilisées.
Le résultat est json, que vous pouvez analyser et utiliser pour votre site externe.
Voir également le site de l'API pour plus de paramètres et de documentation.
Mise à jour pour date_query
L'API ne peut pas créer de résultat pour une requête comme query_date
. Voir la documentation pour tous les paramètres possibles.
Mais la nouvelle version sortira en vue des jours, des semaines. Et consultez ce problème pour discuter d'une solution pour cette requête de date. Vous pouvez également utiliser un filtre personnalisé via un crochet, comme:
// 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" ) ) )
);
} );
Mise à jour pour meta_query
L'API ne peut pas également cette fonctionnalité de WP-Query par défaut. Mais vous pouvez utiliser un crochet pour améliorer l'API à cette exigence. Ici aussi un petit exemple.
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;
}
Maintenant, je peux appeler JSON reposant comme ça pour imiter le filtre de messages Wp_query déjà sur le serveur:
?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 mise à jour de la méta-requête basée sur cette réponse .