Funcția get_query_var nu funcționează deloc
Da, există câteva subiecte similare despre această funcție, get_query_var('paged') returnează același rezultat
sortarea articolelor de blog nu funcționează când folosim get_query_var
Folosesc wordpress3.5, am propriul meu sistem bazat pe php mysql, și trebuie să integrez o funcție de blog, și am nevoie doar să listez ultimele articole
într-un fișier php separat ordonate după data postării
. Practic, cerințele mele sunt simple:
listează toate articolele într-un fișier php, să zicem că acest fișier se numește blog_show.php
Pentru că voi folosi API-ul wordpress în afara wordpress, trebuie să import wordpress mai întâi, puteți găsi modalitatea de aici Integrarea Wordpress cu site-urile tale
Iată o parte din 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' => __('« Anterior'),
'next_text' => __('Următor »')
);
$lateset_posts_paging = paginate_links($paging_args);
Totul este în regulă, pot folosi
$lateset_posts = new WP_Query($query_args);
pentru a găsi articolele pe care le doresc. Dar nu pot folosi
get_query_var('p')
Primesc mereu aceeași valoare.
Și am descoperit că chiar dacă declar wp_query ca global, tot nu poate fi folosit, aproape toate câmpurile din wp_query sunt null
.
Din cauză că get_query_var('p')
și $wp_query
nu pot fi folosite, nici paginarea mea nu poate fi folosită.
După cum vedeți, variabila p
este folosită doar în două locuri
$current_page = (get_query_var('p')) ? get_query_var('p') : 1;
$query_args = array(
//ceva
'paged' => $current_page,
);
și
$paging_args = array(
'base' => '%_%',
'format' => '?p=%#%', //P este aici
'total' => 10,
'current' => $current_page,
'end_size' => 1,
'mid_size' => 1,
'prev_next' => True,
'prev_text' => __('« Anterior'),
'next_text' => __('Următor »')
);
Am făcut un test, chiar dacă am schimbat p
în paged
sau orice altceva
, tot primesc aceeași eroare.
Unde greșesc, trebuie să includ niște fișiere php suplimentare? Mulțumesc.

WordPress nu adaugă automat toți parametrii din șirul de interogare (parametrii $_GET) ca query_var
.
Când variabila de interogare somevar
nu este înregistrată:
example.com/some-page/?somevar=hello
- WordPress ignoră somevar
Când variabila de interogare somevar
este înregistrată:
example.com/some-page/?somevar=hello
- WordPress stochează valoarea acestui parametru în array-ul $wp_query->query_vars
Diferența dintre înregistrarea acelei variabile în WordPress este dacă valoarea este stocată în obiectul WP_Query (valoarea ar trebui să rămână disponibilă prin $_GET indiferent de înregistrare).
Pentru a înregistra variabila personalizată de interogare, ar trebui să folosești:
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;
}
De asemenea, ai grijă să nu folosești nume de query_var implicite din WordPress - probabil vei avea conflicte în acest caz, cred.
