La función get_query_var no funciona en absoluto
Sí, hay algunos temas similares sobre esta función, get_query_var('paged') devolviendo el mismo resultado
la ordenación de posts del blog no funciona al usar get_query_var
Estoy usando WordPress 3.5, tengo mi propio sistema basado en PHP MySQL, y necesito integrar una función de blog, solo necesito listar los últimos posts
en un archivo PHP separado ordenado por fecha de post
. Básicamente, mis requerimientos son simples:
listar todos los posts en un archivo php, supongamos que este archivo se llama blog_show.php
Como usaré la API de WordPress fuera de WordPress, necesito importar WordPress primero, puedes encontrar la forma aquí Integración de WordPress con tus sitios
Aquí hay parte de mi 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' => __('Siguiente »')
);
$lateset_posts_paging = paginate_links($paging_args);
Todo está bien, puedo usar
$lateset_posts = new WP_Query($query_args);
para encontrar los posts que quiero. Pero no puedo usar
get_query_var('p')
Siempre obtengo el mismo valor.
Y descubrí que incluso declarando wp_query como global, aún no se puede usar, casi todos los campos de wp_query son null
.
Debido a que get_query_var('p')
y $wp_query
no se pueden usar, mi paginación tampoco funciona.
Como pueden ver, la variable p
solo se usa en dos lugares
$current_page = (get_query_var('p')) ? get_query_var('p') : 1;
$query_args = array(
//algo
'paged' => $current_page,
);
y
$paging_args = array(
'base' => '%_%',
'format' => '?p=%#%', //P está aquí
'total' => 10,
'current' => $current_page,
'end_size' => 1,
'mid_size' => 1,
'prev_next' => True,
'prev_text' => __('« Anterior'),
'next_text' => __('Siguiente »')
);
He hecho una prueba, incluso cambiando p
a paged
o cualquier otra cosa
, sigo obteniendo el mismo error.
¿Dónde me equivoco, necesito requerir algunos archivos PHP adicionales? Gracias.

WordPress no añade automáticamente todos los parámetros de cadena de consulta (parámetros $_GET) como query_var
s.
Cuando la variable de consulta somevar
no está registrada:
ejemplo.com/alguna-pagina/?somevar=hola
- WordPress ignora somevar
Cuando la variable de consulta somevar
está registrada:
ejemplo.com/alguna-pagina/?somevar=hola
- WordPress almacena el valor de este parámetro en el array $wp_query->query_vars
La diferencia entre registrar esa variable con WordPress es si el valor se almacena en el objeto WP_Query.. (debería seguir estando disponible via $_GET independientemente).
Para registrar tu variable de consulta personalizada, deberías usar:
add_filter('query_vars', 'add_my_var');
function add_my_var($public_query_vars) {
$public_query_vars[] = 'identificador_unico_para_tu_variable';
return $public_query_vars;
}
También ten cuidado de no usar nombres de query_var por defecto de WordPress - probablemente tendrás conflictos en ese caso, supongo.
