Usando $paged redirige /page/2 a la página 1

12 ene 2014, 18:45:12
Vistas: 15.1K
Votos: 2

He configurado una consulta personalizada para mis publicaciones (single.php) con paginación, que por cierto funciona perfectamente con la estructura de enlaces permanentes predeterminada.

dominio.com/p=ID&paged=2

Si cambio los enlaces permanentes a /%postname%/, la página/2/ redirige a la primera página.

<?php 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args=array( 'connected_type'=> 'posts_to_posts', 'posts_per_page' => 3, 'paged' => $paged, 'order' => 'ASC', 'connected_items' => get_queried_object() );

$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$wp_query->query( $args );
if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>

    <a href="<?php the_permalink(); ?>" id="post-<?php the_ID(); ?>"><?php the_title(); ?></a>

<?php endwhile; endif; $wp_query = null; $wp_query = $temp; wp_reset_query(); ?>

Lo que me confunde es el hecho de que funcione con los enlaces permanentes predeterminados, ¿por qué no funciona con los enlaces "bonitos"?

La paginación de la página de inicio funciona bien, solo la página de publicación que está mal de alguna manera. ¿Alguien puede indicarme la dirección correcta? ¿Dónde debería buscar errores?

He desactivado todos los plugins, eliminado htaccess y creado uno nuevo, pero sigue sin funcionar.

0
Todas las respuestas a la pregunta 4
2

Si alguien se encuentra con este problema, puedes agregar esto al código de tu functions.php

add_filter('redirect_canonical','pif_disable_redirect_canonical');

function pif_disable_redirect_canonical($redirect_url) {
    if (is_singular()) $redirect_url = false;
return $redirect_url;
}

Fuente

12 ene 2014 19:40:39
Comentarios

Hacer esto tendrá otras consecuencias que pueden ser indeseables, ya que estarás deshabilitando todas las redirecciones canónicas para todas las publicaciones únicas, úsalo bajo tu propio riesgo.

Milo Milo
12 ene 2014 21:36:48

@Milo ¿Existe alguna solución alternativa a esto?

ianrandmckenzie ianrandmckenzie
26 ene 2021 14:24:20
0

Es un problema muy antiguo con la paginación de tipos de entradas personalizadas. Y tiene un problema abierto en el seguidor de desarrollo del núcleo de WordPress La última solución temporal que aparece en el seguidor es esta de abajo. Funciona muy bien para mí.

/**
 * Corrige el problema de paginación en un tipo de entrada personalizada
 *
 * @link https://core.trac.wordpress.org/ticket/15551
 *
 * @param object $request WP_Query
 *
 * @return object
 */
function child_martfury_fix_request_redirect( $request ) {
    if ( isset( $request->query_vars['post_type'] )
         && 'custom_type' === $request->query_vars['post_type']
         && true === $request->is_singular
         && - 1 == $request->current_post
         && true === $request->is_paged
    ) {
        add_filter( 'redirect_canonical', '__return_false' );
    }

    return $request;
}
add_action( 'parse_query', 'child_martfury_fix_request_redirect' );
22 abr 2020 12:48:34
3

Si este no es el bucle principal (es decir, la Página de Blog), WordPress interpretará el /2 como un nombre de subpágina y no como una variable de consulta de paginación.

Si deseas que esto funcione en una página, necesitas registrar una variable de consulta personalizada http://codex.wordpress.org/WordPress_Query_Vars y crear la estructura /page/paginacion/2, por ejemplo.

12 ene 2014 18:57:51
Comentarios

Pero, si ese es el caso, no debería funcionar con los permalinks predeterminados tampoco, ¿estoy equivocado? Si tienes alguna idea que pueda probar, por favor házmelo saber.

user156 user156
12 ene 2014 19:12:32

Sí, lo estás :) Los permalinks "Predeterminados" no necesitan reescribir sus query_vars, por lo que la mayoría de los parámetros GET se analizarán y serán accesibles. Por eso funciona.

Robin Westerlundh Robin Westerlundh
12 ene 2014 19:22:57

Saludos, me hiciste mirar en una dirección diferente. Busqué problemas de redirección con la paginación y me encontré con esta Solución, funcionó genial con mi código actual. :)

user156 user156
12 ene 2014 19:39:19
0

Probé la solución más conocida y no funcionó para mí - al usar /nombre-de-pagina/?page=2 todavía me redirigía a /nombre-de-pagina/.

También noté que usar ?p=2 tampoco funcionó.

La única solución que encontré es usar otro nombre de parámetro, por ejemplo ?pg=2 que no causa redirección y es accesible via $_GET['pg'].

21 nov 2023 15:49:28