Correzione 404 per la paginazione dei custom post type
Ho cercato tutto il giorno di far funzionare questo ma non ho avuto fortuna...
Ho un custom post type chiamato 'news' e un template di archivio (archive-news.php), qui vorrei mostrare 2 post con paginazione, che funziona bene, finché non provo ad andare alla 'pagina successiva' (/news/page/2) che restituisce un errore 404.
Qualcuno sa come correggere questo problema / cosa sto facendo di sbagliato?
Ho letteralmente passato tutto il giorno cercando una soluzione a questo problema cercando su Google e nei forum di WordPress, ho trovato molte soluzioni, nessuna delle quali ha funzionato finora.
La mia funzione del custom post type: http://pastebin.com/uG1L6YNu
La stampa delle mie regole di riscrittura: http://pastebin.com/jbaDANYr

Adesso funziona per me... per quelli di voi che hanno lo stesso problema, si è scoperto che tutto il codice era corretto.
Il problema era che WordPress è configurato per mostrare 10 post per pagina di default, il che entrava in conflitto con la mia query (che limitava a 2 post). Per risolvere il problema ho cambiato l'impostazione in WordPress (Impostazioni / Lettura nel pannello di amministrazione) a 1.

Questo problema si presenta continuamente. IMHO, i custom post type non sono post normali, quindi dovrebbe esserci una variabile di query posts_per_page separata per ogni tipo di post. Comunque, ecco una risposta che mostra come modificare il valore di posts_per_page al volo senza dover modificare le impostazioni nell'amministrazione: http://wordpress.stackexchange.com/questions/30757/change-posts-per-page-count/30763#30763

La soluzione proposta da goto10 funziona perfettamente ed è migliore se vuoi ancora utilizzare l'impostazione dei post per pagina per altre pagine. Sono comunque curioso di capire perché succeda questo, è la prima volta che mi capita. In passato sono sempre riuscito a usare posts_per_page
normalmente senza che entrasse in conflitto con le impostazioni di WP.

Grazie mille per questa informazione! Mi stavo strappando i capelli cercando di sistemare le regole di rewrite e tutto il resto, e alla fine il problema era questo.

Ho trovato una soluzione qui: http://walrusinacanoe.com/web-development/742
È elegante e funzionale:
add_action( 'parse_query', 'changept' );
function changept() {
if( is_category() && !is_admin() )
set_query_var( 'post_type', array( 'post', 'your_custom_type' ) );
return;
}

Questa soluzione ha effettivamente funzionato per me. L'altra soluzione (WP-Admin / Impostazioni / Lettura / 1) non ha funzionato affatto.
Grazie per questo! (ore sprecate a debug e ricerca)

prova questa variante:
add_action('pre_get_posts','custom_pre_get_posts');
function custom_pre_get_posts( $query )
{
if( $query->is_main_query() && !$query->is_feed() && !is_admin()) {
$query->set( 'paged', str_replace( '/', '', get_query_var( 'page' ) ) );
}
}
add_filter('request', 'custom_request');
function custom_request($query_string )
{
if( isset( $query_string['page'] ) ) {
if( ''!=$query_string['page'] ) {
if( isset( $query_string['name'] ) ) {
unset( $query_string['name'] );
}
}
} return $query_string;
}
