Problema di reindirizzamento paginazione $paged su WordPress

12 gen 2014, 18:45:12
Visualizzazioni: 15.1K
Voti: 2

Ho configurato una query personalizzata per i miei articoli (single.php) con paginazione, che tra l'altro funziona perfettamente con la struttura di permalink predefinita.

dominio.com/p=ID&paged=2

Se cambio i permalink in /%postname%/ la pagina/2/ viene reindirizzata alla prima pagina.

<?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(); ?>

Ciò che mi confonde è il fatto che funzioni con i permalink predefiniti, perché non funziona con i permalink "leggibili"?

La paginazione della homepage funziona bene, solo la pagina dell'articolo che presenta problemi. Qualcuno può indicarmi la direzione giusta? Dove dovrei cercare gli errori?

Ho disattivato tutti i plugin, eliminato htaccess e creatone uno nuovo, ma nulla è cambiato.

0
Tutte le risposte alla domanda 4
2

Se qualcuno dovesse imbattersi in questo problema, puoi aggiungere questo codice al tuo file 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;
}

Fonte

12 gen 2014 19:40:39
Commenti

fare questo avrà altre conseguenze che potrebbero essere indesiderate, dato che stai disabilitando tutti i reindirizzamenti canonici per tutti i post singoli, usalo a tuo rischio e pericolo.

Milo Milo
12 gen 2014 21:36:48

@Milo Esiste una soluzione alternativa a questo?

ianrandmckenzie ianrandmckenzie
26 gen 2021 14:24:20
0

È un problema molto vecchio relativo all'impaginazione dei custom post type. Ed è stato segnalato come issue aperta sul tracker di sviluppo del core di WordPress. L'ultima soluzione alternativa presente sul tracker è quella mostrata di seguito. Funziona perfettamente nel mio caso.

/**
 * Corregge il problema di impaginazione su un custom post type
 *
 * @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 apr 2020 12:48:34
3

Se questo non è il loop principale (ovvero la Pagina Blog), WordPress interpreterà /2 come un nome di sottopagina e non come un query_var di impaginazione.

Se desideri che funzioni su una pagina, devi registrare un query_var personalizzato http://codex.wordpress.org/WordPress_Query_Vars e creare la struttura /page/paging/2 ad esempio.

12 gen 2014 18:57:51
Commenti

Ma, se è così, non dovrebbe funzionare nemmeno con i permalink predefiniti, mi sbaglio? Se hai qualche idea che posso provare, fammi sapere.

user156 user156
12 gen 2014 19:12:32

Sì, ti sbagli :) I permalink "Predefiniti" non hanno bisogno di riscrivere i loro query_vars, quindi la maggior parte dei parametri GET verrà analizzata e sarà accessibile. Ecco perché funziona.

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

Grazie, mi hai fatto guardare in una direzione diversa. Ho cercato problemi di reindirizzamento con la paginazione e mi sono imbattuto in questa Soluzione, ha funzionato benissimo con il mio codice attuale. :)

user156 user156
12 gen 2014 19:39:19
0

Ho provato la soluzione più nota e non ha funzionato per me - usando /nome-pagina/?page=2 venivo comunque reindirizzato a /nome-pagina/.

Ho anche notato che usare ?p=2 non funzionava.

L'unica soluzione che ho trovato è usare un altro nome per il parametro, ad esempio ?pg=2 che non causa il reindirizzamento ed è accessibile via $_GET['pg'].

21 nov 2023 15:49:28