Ti darò una piccola risposta al tuo aggiornamento, facendo questo con l' API WP . L'API ha la possibilità di utilizzare WP_Query come anche in core, ma sui parametri get nell'URL.
Un URL per estrarre il contenuto dallo stato dei post sarebbe simile al seguente:
http://example.com/wp-json/posts
Per estrarre il contenuto con i parametri WP_Query a cui sei abituato, puoi farlo in questo modo:
http://example.com/wp-json/posts?filter[posts_per_page]=2&filter[order]=ASC
Puoi creare la tua query personalizzata con tutti i parametri anche nell'URL. Puoi vedere come il metodo per acquisire quei dati è familiare all'utilizzo WP_Query
per un ciclo WordPress standard. Se non si specifica un parametro, l'impostazione predefinita èWP_Query
verranno utilizzati .
Il risultato è JSON, che puoi analizzare e utilizzare per il tuo sito esterno.
Vedi anche il sito dell'API per ulteriori parametri e documentazione.
Aggiornamento per date_query
L'API non può creare un risultato per una query simile query_date
. Vedi la documentazione per tutti i possibili parametri.
Ma la nuova versione verrà rilasciata in vista giorni, settimane. E vedi questo problema per la discussione su una soluzione per questa query di data. In alternativa, utilizzare un filtro personalizzato tramite hook, come:
// 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" ) ) )
);
} );
Aggiornamento per meta_query
L'API non può anche questa funzionalità della query WP predefinita. Ma puoi usare un hook per migliorare l'API a questo requisito. Anche qui un piccolo esempio.
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;
}
Ora, posso chiamare JSON riposante in questo modo per imitare il filtro post Wp_query già sul server:
?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
L'aggiornamento della meta query basato su questa risposta .