La funzione get_query_var non funziona affatto
Sì, ci sono alcuni argomenti simili su questa funzione, get_query_var('paged') restituisce lo stesso risultato
l'ordinamento dei post del blog non funziona usando get_query_var
Sto usando wordpress3.5, ho il mio proprio
sistema basato su php mysql, e ho bisogno di integrare una funzione blog, e mi serve solo elencare gli ultimi post
su un file php separato ordinati per data del post
. Fondamentalmente, i miei requisiti sono semplici:
elencare tutti i post su un file php, supponiamo che questo file si chiami blog_show.php
Poiché userò le API di WordPress all'esterno di WordPress, devo prima importare WordPress, puoi trovare il modo qui Integrazione di WordPress con i tuoi siti
Ecco una parte del mio blog_show.php
define('WP_USE_THEMES', false);
require_once '../blog/wp-load.php';
global $wp_query;
wp_reset_query();
$current_page = (get_query_var('p')) ? get_query_var('p') : 1;
$query_args = array(
'orderby' => 'date',
'order' => 'DESC',
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => 2,
'paged' => $current_page,
//'add_args' => true
);
$lateset_posts = new WP_Query($query_args);
$paging_args = array(
'base' => '%_%',
'format' => '?p=%#%',
'total' => 10,
'current' => $current_page,
'end_size' => 1,
'mid_size' => 1,
'prev_next' => True,
'prev_text' => __('« Precedente'),
'next_text' => __('Successivo »')
);
$lateset_posts_paging = paginate_links($paging_args);
Va tutto bene, posso usare
$lateset_posts = new WP_Query($query_args);
per trovare i post che voglio. Ma non posso usare
get_query_var('p')
Ottengo sempre lo stesso valore.
E ho scoperto che anche se dichiaro wp_query come globale, non può essere ancora utilizzato, quasi tutti i campi di wp_query sono null
.
Poiché get_query_var('p')
e $wp_query
non possono essere utilizzati, anche la mia paginazione non può essere utilizzata.
Come puoi vedere, la variabile p
viene utilizzata solo in due punti
$current_page = (get_query_var('p')) ? get_query_var('p') : 1;
$query_args = array(
//qualcosa
'paged' => $current_page,
);
e
$paging_args = array(
'base' => '%_%',
'format' => '?p=%#%', //P qui
'total' => 10,
'current' => $current_page,
'end_size' => 1,
'mid_size' => 1,
'prev_next' => True,
'prev_text' => __('« Precedente'),
'next_text' => __('Successivo »')
);
Ho fatto una prova, anche se ho cambiato p
in paged
o qualsiasi altra cosa
, ottengo ancora lo stesso errore.
Dove ho sbagliato, ho bisogno di richiedere alcuni file php extra? Grazie.

WordPress non aggiunge automaticamente tutti i parametri della query string (parametri $_GET) come query_var
.
Quando la Query Var somevar
non è registrata:
example.com/some-page/?somevar=hello
- WordPress ignora somevar
Quando la Query Var somevar
è registrata:
example.com/some-page/?somevar=hello
- WordPress memorizza il valore di questo parametro nell'array $wp_query->query_vars
La differenza tra registrare quella variabile con WordPress è se il valore viene memorizzato nell'oggetto WP_Query.. (dovrebbe comunque essere disponibile via $_GET indipendentemente).
Per registrare la tua query var personalizzata, dovresti usare:
add_filter('query_vars', 'add_my_var');
function add_my_var($public_query_vars) {
$public_query_vars[] = 'some_unique_identifier_for_your_var';
return $public_query_vars;
}
Inoltre fai attenzione a non usare nomi di query_var predefiniti di WordPress - probabilmente otterrai alcuni conflitti in quel caso, immagino.
