Solución error 404 en paginación de tipos de contenido personalizados
He estado tratando de hacer que esto funcione todo el día pero no he tenido suerte...
Tengo un tipo de contenido personalizado llamado 'news' y una plantilla de archivo (archive-news.php), aquí me gustaría mostrar 2 entradas con paginación, lo cual funciona bien, hasta que intento ir a la 'siguiente página' (/news/page/2) que devuelve un error 404.
¿Alguna idea de cómo arreglar esto / qué estoy haciendo mal?
Literalmente he pasado todo el día tratando de encontrar una solución buscando en Google y en los foros de WordPress, encontré muchas soluciones, pero ninguna ha funcionado hasta ahora.
Mi función de tipo de contenido personalizado: http://pastebin.com/uG1L6YNu
Mi impresión de reglas de reescritura: http://pastebin.com/jbaDANYr

Ahora esto funciona para mí... para aquellos que tienen el mismo problema, resulta que todo el código era correcto.
El problema era que WordPress está configurado para mostrar 10 publicaciones por página por defecto, lo que entraba en conflicto con mi consulta (que limitaba a 2 publicaciones). Para solucionar el problema, cambié la configuración de WordPress (Ajustes / Lectura en el panel de administración) a 1.

Este problema aparece todo el tiempo. En mi humilde opinión, los tipos de entradas personalizadas no son entradas regulares, por lo que debería haber una variable de consulta posts_per_page separada para cada tipo de entrada. De todos modos, aquí hay una respuesta que muestra cómo ajustar el valor de posts_per_page sobre la marcha sin tocar la configuración en el administrador: http://wordpress.stackexchange.com/questions/30757/change-posts-per-page-count/30763#30763

Esa pregunta de goto10 funciona de maravilla y es mejor si aún deseas usar la configuración de entradas por página para otras páginas, todavía tengo curiosidad sobre por qué sucede esto, es la primera vez que me pasa, antes podía usar posts_per_page
normalmente sin que entrara en conflicto con la configuración de WP.

¡Muchas gracias por esta información! Me estaba volviendo loco jugando con reglas de reescritura y todo lo demás, y resulta que este era el problema.

Encontré una solución aquí: http://walrusinacanoe.com/web-development/742
Es elegante y funcional:
add_action( 'parse_query','changept' );
function changept() {
if( is_category() && !is_admin() )
set_query_var( 'post_type', array( 'post', 'your_custom_type' ) );
return;
}

Esto realmente funcionó para mí. La otra solución (WP-Admin / Ajustes / Lectura / 1) no funcionó en absoluto.
¡Gracias por esto! (horas perdidas depurando y buscando)

prueba esta 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;
}
