6

Quando faccio clic su un link di impaginazione nel mio post personalizzato, "funziona" l'elenco di post (o inserisci un URL come "mysite.com/works/page/2"), ottengo il 404 pagine.I link di paginazione del tipo di post personalizzati di WordPress restituiscono 404

L'impaginazione del tipo di post normale (blog) funziona correttamente. Inoltre, tutto il resto riguardante il mio tipo di post personalizzato "funziona" sembra funzionare correttamente.

mio file di modello-works.php ha questo:

get_home_pagination();

$args = array('post_type' => 'works', 'posts_per_page' => 10, 'paged' => $paged); $wp_query = new WP_Query($args);

if ($wp_query->have_posts()) :

while ($wp_query->have_posts()) : $wp_query->the_post(); get_template_part('loop', 'works'); endwhile;

else : _e('Nothing here.'); endif;

Lo stesso codice (in sostituzione del post-tipo, naturalmente) è utilizzato nel modello-blog.php, dove link di paginazione funzionano correttamente.

E poi nel functions.php c'ho:

function get_home_pagination() {

global $paged, $wp_query, $wp; $args = wp_parse_args($wp->matched_query);

if (!empty ($args['paged']) && 0 == $paged) {

$wp_query->set('paged', $args['paged']); 
    $paged = $args['paged']; 

} }

Per un attimo ho pensato che stava accadendo a causa di WordPress non riusciva a trovare alcun posto all'interno del ciclo: si è cercato di ottenere l'ID post quando non c'erano post, come nella riga 29 di post-template.php. Ma poi ho capito:

Se si digita, ad esempio, l'URL "(...)/blog/page/456", il modello del blog viene caricato con il messaggio "Niente qui". Nessuna pagina di errore 404.

D'altra parte, l'URL "works/page/2", che mi aspetto di restituire alcuni post, termina su una pagina di errore 404.

Perché?

EDIT:

Nella pagina 404 ho anche ottenere questo errore:

Trying to get property of non-object in (…)/wordpress/wp-includes/post-template.php on the line 29.

... ma non potrebbe essere correlato al problema impaginazione. Sono riuscito a rimuovere il codice che causa questo errore (da un plug-in che ho personalizzato) e l'impaginazione continua a non funzionare.

EDIT:

Questo è quello che ho ottenuto dal debug l'URL mysite.com/trabalhos/pagina/2 con il Debug-questo plug-in. Sembra essere molto sbagliato:

Obs: trabalhos = opere, Pagina = pagina

Matched Rule: trabalhos/([^/]+)(/[0-9]+)?/?$

Matched Query: works=pagina&page=%2F2

Query String: page=%2F2&name=pagina&post_type=works&works=pagina&debug-this=rewrites

Nella mia comprensione, l'URL mysite.com/trabalhos/pagina/2 deve puntare al URL seguente (tranne che non funziona - ma se sostituisco 'trabalhos' con 'Noticias' - la mia lumaca di 'blog' - funziona):

mysite.com/trabalhos/pagina/2/?pagename=trabalhos

Tuttavia, l'URL mysite.com/trabalhos/pagina/2 punti a questo strano url:

mysite.com/trabalhos/pagina/2?page=%2F2&works=pagina&post_type=works&name=pagina

E sorprendentemente, i seguenti URL punta esattamente al contenuto mi aspettavo, cioè, pagina 2 di opere (trabalhos):

mysite.com/noticias/pagina/2/?pagename=trabalhos

Mi sembra di essere vicino alla soluzione ... tuttavia ho provato a disattivare tutti i plug-in, rimuovendo quasi tutto il codice php del tema, ogni volta resettando le impostazioni dei permalink nel pannello di amministrazione, tra le altre cose, e l'errore persiste.

È una configurazione errata? Dove sarebbe?

Grazie in anticipo per qualsiasi aiuto!

+1

Ancora una volta salva il pulsante Permalink, può risolvere questo problema –

+1

guarda la mia risposta http://stackoverflow.com/questions/22364294/pagination-on-custom-wp-query-in-wordpress-takes-to-404 -error-page/22465969 # 22465969 –

+0

Ho usato un plug-in per eseguire il debug della query e la riscrittura. La query abbinata e la stringa di query per il link di impaginazione delle opere sono disordinatamente disordinate e la regola corrispondente sembra sbagliata. Sono stato per un po 'di tempo e non riesco a capirlo. Sono molte informazioni da inserire in un commento. Potrei modificare il mio post ma credo che sarebbe meglio iniziare una nuova discussione ... – zok

risposta

13

Sembra un conflitto di slug nel tipo di post personalizzato. Prova a rinominare il post slug con qualsiasi altro nome e torna a link permanenti per rigenerare le regole di riscrittura.

+1

Si è scoperto che era in effetti un conflitto di CPT/pagina slug. Ho usato lo stesso slug nella mia proprietà personalizzata 'riscrivi' la proprietà e nella pagina che stava elencando tutti i post di quel tipo di post personalizzato, e apparentemente che ha completamente incasinato la stringa di query di WordPress. – zok

+1

Questo post mi ha anche dato buoni spunti sull'argomento: http://code.tutsplus.com/tutorials/custom-post-type-pagination-chaining-method--wp-21444 – zok

+1

Grazie a dio ho trovato questo, vorrei non ho mai scoperto se non l'avessi letto! – Noob17

Problemi correlati