Solución error 404 en paginación de tipos de contenido personalizados

10 jul 2011, 04:09:33
Vistas: 31.7K
Votos: 10

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

1
Comentarios

ah, y también... Mi archivo news-archive.php: http://pastebin.com/vjcx77F7

Dale-Anthony Dale-Anthony
10 jul 2011 04:09:55
Todas las respuestas a la pregunta 4
5
21

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.

11 jul 2011 23:39:37
Comentarios

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

Dave Romsey Dave Romsey
4 feb 2012 02:41:26

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.

Javier Villanueva Javier Villanueva
23 feb 2012 13:50:17

¡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.

Chaser324 Chaser324
27 ago 2012 22:11:31

¡Es 2019 y esta respuesta sigue siendo válida! Increíble.

Cenlan Cenlan
17 dic 2019 15:13:50

Gracias, muy útil.

user1032559 user1032559
19 abr 2022 23:19:45
2
10

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;
}
26 sept 2011 20:40:42
Comentarios

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)

Esteban Esteban
15 oct 2014 01:03:03

Muchos años después y esta función resolvió el problema para mí. ¡3 días de desesperación después! Muchísimas gracias.

Edvin Uddfalk Edvin Uddfalk
21 may 2024 21:31:53
1

Probablemente ya lo hayas intentado, pero restablecer los enlaces permanentes puede resolver este problema. Ve a Ajustes->Enlaces permanentes y guarda los enlaces permanentes nuevamente.

10 jul 2011 05:21:07
Comentarios

Gracias, intenté esto pero el problema persistió.

Dale-Anthony Dale-Anthony
10 jul 2011 12:51:52
2

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; 
}
5 may 2021 16:56:08
Comentarios

¿Puedes explicar tu solución?

tehlivi tehlivi
13 may 2021 04:32:34

El código parece mostrar todo, reconstruye la cadena de consulta correctamente. Si alguna página está abierta, pero no se refleja por error en la URL, reconstruye y añade el slug faltante a la sección.

ktscript ktscript
13 may 2021 07:28:30