Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Problema con Paginacion

Estas en el tema de Problema con Paginacion en el foro de WordPress en Foros del Web. El problema es que en la paginacion cuando quiero pasar de pagina en la url aparece page/2/ pero las noticias siguen siendo las mismas, como ...
  #1 (permalink)  
Antiguo 22/11/2011, 09:32
Avatar de demeNcys  
Fecha de Ingreso: junio-2009
Ubicación: Buenos Aires
Mensajes: 147
Antigüedad: 15 años, 5 meses
Puntos: 9
Pregunta Problema con Paginacion

El problema es que en la paginacion cuando quiero pasar de pagina en la url aparece page/2/ pero las noticias siguen siendo las mismas, como si no pasara de pagina.

Probe con esto: $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; query_posts("cat=-45&paged=$paged");

pero tampoco funciona, en ninguna parte de wordpress, ni en tags, ni category, ni en el index en ninguna parte.

Última edición por demeNcys; 22/11/2011 a las 09:48
  #2 (permalink)  
Antiguo 22/11/2011, 10:38
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 9 meses
Puntos: 535
Respuesta: Problema con Paginacion

Me suena a que viene por acá la cosa: http://weblogtoolscollection.com/arc...rdpress-loops/

Probalo.
__________________
...___...
  #3 (permalink)  
Antiguo 22/11/2011, 10:41
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 3 meses
Puntos: 638
Respuesta: Problema con Paginacion

¿Estás desarrollando un theme por ti mismo? En ese caso siempre es bueno ver cómo lo hacen los demás.

Aquí te pego el código del paginado de Twenty Ten:
Código PHP:
Ver original
  1. <?php /* Display navigation to next/previous pages when applicable */ ?>
  2. <?php if (  $wp_query->max_num_pages > 1 ) : ?>
  3.     <div id="nav-below" class="navigation">
  4.         <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">&larr;</span> Older posts', 'twentyten' ) ); ?></div>
  5.         <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">&rarr;</span>', 'twentyten' ) ); ?></div>
  6.     </div><!-- #nav-below -->
  7. <?php endif; ?>

Igual considera usar un plugin como WP-PageNavi

Saludos.
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #4 (permalink)  
Antiguo 08/12/2011, 19:58
 
Fecha de Ingreso: julio-2010
Mensajes: 393
Antigüedad: 14 años, 3 meses
Puntos: 67
Respuesta: Problema con Paginacion

Hola amigo, te recomiendo esta clase para paginaciones, está excelente: paginación php.

Saludos!
__________________
Páginas web de alta calidad y hechas a la medida.
  #5 (permalink)  
Antiguo 09/12/2011, 07:59
Avatar de zanguanga
Moderadora
 
Fecha de Ingreso: julio-2009
Ubicación: España
Mensajes: 1.686
Antigüedad: 15 años, 4 meses
Puntos: 429
Respuesta: Problema con Paginacion

Cita:
Iniciado por demeNcys Ver Mensaje
El problema es que en la paginacion cuando quiero pasar de pagina en la url aparece page/2/ pero las noticias siguen siendo las mismas, como si no pasara de pagina.

Probe con esto: $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; query_posts("cat=-45&paged=$paged");

pero tampoco funciona, en ninguna parte de wordpress, ni en tags, ni category, ni en el index en ninguna parte.
Yo tengo el mismo problema en Todoalergias.com. He probado con el código del codex y más cosas pero nada, si haces clik en los números funciona, pero si lo haces en siguiente, se atasca en la segunda página

Me guardo este hilo a ver si lo solucionamos, gracias.
__________________
Mi blog personal | Mi G+
  #6 (permalink)  
Antiguo 09/12/2011, 08:44
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 3 meses
Puntos: 638
Respuesta: Problema con Paginacion

Supongamos que tienen un Loop del tipo:
Código PHP:
Ver original
  1. <?php
  2. while( have_posts() ) : the_post();
  3.     // Aquí los artículos y bla bla bla
  4. endwhile; // End the loop.
Sugiero que prueben, al final del Loop, poner esta función wp_reset_postdata(), osea, que se vea así:
Código PHP:
Ver original
  1. <?php
  2. while( have_posts() ) : the_post();
  3.     // Aquí los artículos y bla bla bla
  4. endwhile; // End the loop.
  5.  
  6. wp_reset_postdata();
  7. ?>
  8.  
  9. <?php /* Display navigation to next/previous pages when applicable */ ?>
  10. <?php if (  $wp_query->max_num_pages > 1 ) : ?>
  11.     <div id="nav-below" class="navigation">
  12.         <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">&larr;</span> Older posts', 'twentyten' ) ); ?></div>
  13.         <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">&rarr;</span>', 'twentyten' ) ); ?></div>
  14.     </div><!-- #nav-below -->
  15. <?php endif; ?>

Saludos
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #7 (permalink)  
Antiguo 14/12/2011, 03:46
 
Fecha de Ingreso: febrero-2004
Mensajes: 446
Antigüedad: 20 años, 9 meses
Puntos: 0
Respuesta: Problema con Paginacion

Me ocurre exactamente lo mismo, incluso no aparece ni la paginación, (lo del << 1, 2, 3, 4 ... >>), solo un botón de "OLDER >", que carga la pagina con "&paged=2" o "&paged=3", pero siempre muestra la misma lista de resultados.

rogertm, ¿esa función de la que hablas, hay que incluirla manualmente en el archivo "query.php"?

¡Un saludo!

EDITO:

zanguanga, he visitado tu página web de las alergias, y parece que has solucionado el problema de la paginación. ¿Cómo lo has logrado?, estoy algo perdido.

Última edición por walvaRo; 14/12/2011 a las 03:52
  #8 (permalink)  
Antiguo 14/12/2011, 06:43
Avatar de zanguanga
Moderadora
 
Fecha de Ingreso: julio-2009
Ubicación: España
Mensajes: 1.686
Antigüedad: 15 años, 4 meses
Puntos: 429
Respuesta: Problema con Paginacion

Cita:
zanguanga, he visitado tu página web de las alergias, y parece que has solucionado el problema de la paginación. ¿Cómo lo has logrado?, estoy algo perdido.
Por desgracia no está solucionado, lo que ocurre es que no llego a todo y de momento tengo otras prioridades.

El código es el que viene el codex de WordPress, y funciona correctamente en la home, pero no en las categorías ni en los tags. Lo copio aquí, por si alguien da con la solución:

Código:
				<div id="nav-below" class="navigation">
					<?php
					global $paged;
					if ( isset( $_GET['paged'] ) )
					$page = abs( (int) $_GET['paged'] );
					else
					$page = 1;
					$start = $offset = ( $page - 1 ) * 20;
					$page_links = paginate_links( array(
   					 'base' => add_query_arg( 'paged', '%#%' ),
					    'format' => '',
					    'total' => $wp_query->max_num_pages,
					    'current' => $page
					));

					if ( $page_links )
					    echo '<div class="navigation2">' .$page_links. '</div>';
					?> 
				</div><!-- #nav-below -->
Es un ChildTheme de Twenty (mi primer child-theme!) y el código va en las plantillas de loop-category.php, justo después del loop. Seguro que es una tontería pero aún no me he metido con ello...
__________________
Mi blog personal | Mi G+
  #9 (permalink)  
Antiguo 14/12/2011, 06:54
Avatar de zanguanga
Moderadora
 
Fecha de Ingreso: julio-2009
Ubicación: España
Mensajes: 1.686
Antigüedad: 15 años, 4 meses
Puntos: 429
Respuesta: Problema con Paginacion

Disculpas por doble posteo, pero creo que la ocasión lo merece, pues ya tengo la solución. Resulta que me he picado y acabo de comprobar que había diferencias en el código entre el loop-index y el loop-category, he puesto el mismo y ¡funciona!

Aquí va el código. Solución:

Código:
	<div id="nav-below" class="navigation">
		<div class="navigation2">
		<?php 
		global $wp_query, $wp_rewrite;
		$wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1;

		$pagination = array(
			'base' => @add_query_arg('paged','%#%'),
			'format' => '',
			'total' => $wp_query->max_num_pages,
			'current' => $current,
			'show_all' => false,
			'type' => 'plain'
			);

		if( $wp_rewrite->using_permalinks() )
		$pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg( 's', get_pagenum_link( 1 ) ) ) . 'page/%#%/', 'paged' );

		if( !empty($wp_query->query_vars['s']) )
		$pagination['add_args'] = array( 's' => get_query_var( 's' ) );

		echo paginate_links( $pagination );
		?>
		</div>
	</div><!-- #nav-below -->
__________________
Mi blog personal | Mi G+
  #10 (permalink)  
Antiguo 14/12/2011, 07:40
 
Fecha de Ingreso: febrero-2004
Mensajes: 446
Antigüedad: 20 años, 9 meses
Puntos: 0
Respuesta: Problema con Paginacion

He utilizado tu código zanguanga, pero sigue ocurriendo lo mismo, no me muestra nuevos resultados, siempre veo lo mismo aunque en la barra de la URL ponga "&paged=2" o "&paged=3".

¿Que puedo hacer?

Estoy completamente perdido.
  #11 (permalink)  
Antiguo 14/12/2011, 07:52
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 3 meses
Puntos: 638
Respuesta: Problema con Paginacion

@walvaRo, el código que ella pone, funciona para su theme, y no necesariamente tiene que funcionar para todos los themes allá afuera, si pusieras tu código aquí, seguro entre todos podremos encontrar la solución rápidamente...

Saludos.
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #12 (permalink)  
Antiguo 14/12/2011, 08:07
 
Fecha de Ingreso: febrero-2004
Mensajes: 446
Antigüedad: 20 años, 9 meses
Puntos: 0
Respuesta: Problema con Paginacion

Hola rogertm, hola zanguanga, he probado el código de zanguanga y funciona correctamente solo en los resultados de busqueda, pero no dentro de una categoría concreta que posea entradas.

rogertm, el código que he usado es el de zanguanga, exactamente igual.

Estas son las páginas de las que se compone el "theme" que uso:


Archivos
(archive.php)
Barra lateral
(sidebar.php)
Cabecera
(header.php)
Comentarios
(comments.php)
Entrada individual
(single.php)
Error 404 (página no encontrada)
(404.php)
Formulario de búsqueda
(searchform.php)
Funciones del tema
(functions.php)
Pie de página
(footer.php)
Plantilla de la página principal
(index.php)
Plantilla de página
(page.php)
Resultados de la búsqueda
(search.php)
loop.php
(loop.php)
pagination.php
(pagination.php)
slideshow.php
(slideshow.php)
  #13 (permalink)  
Antiguo 14/12/2011, 10:18
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 3 meses
Puntos: 638
Respuesta: Problema con Paginacion

OK, revisa tus archivos archive.php, functions.php y pagination.php... Supongo que el asunto esté en archive.php

Saludos.
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #14 (permalink)  
Antiguo 14/12/2011, 11:29
Avatar de zanguanga
Moderadora
 
Fecha de Ingreso: julio-2009
Ubicación: España
Mensajes: 1.686
Antigüedad: 15 años, 4 meses
Puntos: 429
Respuesta: Problema con Paginacion

Acuérdate también de chequear con todos los plugins desactivados. Así sabrás si es cosa del tema o de un plugin.
__________________
Mi blog personal | Mi G+
  #15 (permalink)  
Antiguo 15/12/2011, 02:45
 
Fecha de Ingreso: febrero-2004
Mensajes: 446
Antigüedad: 20 años, 9 meses
Puntos: 0
Respuesta: Problema con Paginacion

¡Muchísimas gracias! voy a probar con lo que me decís a ver que averiguo. Si tengo mas dudas os preguntaré, (seguro que si). :)

¡Un saludo!

EDITO:

¡Hola de nuevo!

Sin ser un experto ni tener apenas conocimientos de wp o de programación, me da la sensación de que el problema reside en el archivo loop.php

Este es el código de loop.php:

Código PHP:
Ver original
  1. <?php if ( have_posts() ) : ?>
  2.  
  3. <?php if($m) {$current_year = $m;} else {$current_year = date('Y');}; $current_category = $cat; ?>
  4. <?php if ( is_home() ) {
  5.     query_posts($query_string . 'posts_per_page=6&cat=1,37,38');
  6.     echo ('<div id="loop" class="news clear">');
  7. } else if ( is_category(array(6,33,34)) ) {
  8.     query_posts($query_string . 'year=' . $current_year . '&cat=' . $current_category . '&orderby=title&order=ASC');
  9.     echo ('<div id="loop" class="grid clear">');
  10. } else if ( is_search() ) {
  11.     global $query_string;
  12.     $query_args = explode("&", $query_string);
  13.     $search_query = array();
  14.     foreach($query_args as $key => $string) {
  15.         $query_split = explode("=", $string);
  16.         $search_query[$query_split[0]] = $query_split[1];
  17.     } // foreach
  18.     $search = new WP_Query($search_query);
  19.     echo ('<div id="loop" class="list clear">');
  20. } else {
  21.     query_posts($query_string . 'year=' . $current_year . '&cat=' . $current_category . '&orderby=date&order=DES');
  22.     echo ('<div id="loop" class="list clear">');
  23. }
  24. ?>
  25.  
  26. <?php while ( have_posts() ) : the_post(); ?>
  27. <?php if ( is_category(array(6,33,34))) { ?>
  28.  
  29.         <div <?php post_class('post clear'); ?> id="post_<?php the_ID(); ?>">
  30.             <div class="back_thumb">
  31.         <?php if ( has_post_thumbnail() ) :?>
  32.                 <a href="<?php the_permalink() ?>" class="thumb"><?php the_post_thumbnail('thumbnail', array(
  33.                         'alt'    => trim(strip_tags( $post->post_title )),
  34.                         'title'    => trim(strip_tags( $post->post_title )),
  35.                     )); ?></a>
  36.             <?php endif; ?>
  37.         </div>
  38.                 <h2 class="name"><a href="<?php  the_permalink() ?>"><?php the_title();  ?></a></h2>
  39.         </div>
  40.  
  41.  
  42. <?php } elseif ( is_category(array(1,37,38))) { ?>
  43.  
  44.         <div <?php post_class('post clear'); ?> id="post_<?php the_ID(); ?>">
  45.             <div class="back_thumb">
  46.         <?php if ( has_post_thumbnail() ) :?>
  47.                 <a href="<?php the_permalink() ?>" class="thumb"><?php the_post_thumbnail('thumbnail', array(
  48.                         'alt'    => trim(strip_tags( $post->post_title )),
  49.                         'title'    => trim(strip_tags( $post->post_title )),
  50.                     )); ?></a>
  51.             <?php endif; ?>
  52.         </div>
  53.  
  54.                 <div class="post-category"><?php the_category('<span> / </span>'); ?></div>
  55.                 <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
  56.         <?php $field = get_field('fecha_de_inicio'); ?>
  57.         <?php if ($field) : ?>
  58.         <h3><?php the_field('fecha_de_inicio'); ?> - <?php the_field('fecha_de_finalizacion'); ?></h3>
  59.         <?php endif; ?>
  60.         </div>
  61.  
  62. <?php } else { ?>
  63.  
  64.         <div <?php post_class('post clear'); ?> id="post_<?php the_ID(); ?>">
  65.             <div class="back_thumb">
  66.         <?php if ( has_post_thumbnail() ) :?>
  67.                 <a href="<?php the_permalink() ?>" class="thumb"><?php the_post_thumbnail('thumbnail', array(
  68.                         'alt'    => trim(strip_tags( $post->post_title )),
  69.                         'title'    => trim(strip_tags( $post->post_title )),
  70.                     )); ?></a>
  71.             <?php endif; ?>
  72.         </div>
  73.                 <div class="post-category"><?php the_category('<span> / </span>'); ?></div>
  74.                 <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
  75.         <?php $field = get_field('fecha_de_inicio'); ?>
  76.         <?php if ($field) : ?>
  77.         <h3><?php the_field('fecha_de_inicio'); ?> - <?php the_field('fecha_de_finalizacion'); ?></h3>
  78.         <?php endif; ?>
  79.                 <div class="post-content"><a href="<?php  the_permalink() ?>"><?php if (function_exists('smart_excerpt'))  smart_excerpt(get_the_excerpt(), 30); ?></a></div>
  80.         </div>
  81.  
  82. <?php } ?>
  83.  
  84. <?php endwhile; ?>
  85.  
  86.    </div>
  87.  
  88. <?php endif; ?>

Me he dado cuenta de que en ningúno de los "elseif is_category" aparece la categoría para la que quiero una paginación correcta, la categoria que no se "pagina" bien tiene asociado el número 5, el problema es que no funciona si añado un 5 a alguno de los "elseif is_category".

He probado a crear un nuevo "elseif is_category" dedicado a la categoria que quiero, sin usar array para que no se mezcle:

Código PHP:
Ver original
  1. else if ( is_category(5) ) {
  2.     query_posts($query_string . 'year=' . $current_year . 'posts_per_page=3&cat=' . $current_category . '&orderby=date&order=ASC');
  3.     echo ('<div id="loop" class="news clear">');
  4. }
Pero tampoco funciona.

Última edición por rogertm; 15/12/2011 a las 10:26
  #16 (permalink)  
Antiguo 17/12/2011, 12:05
Avatar de demeNcys  
Fecha de Ingreso: junio-2009
Ubicación: Buenos Aires
Mensajes: 147
Antigüedad: 15 años, 5 meses
Puntos: 9
Respuesta: Problema con Paginacion

a mi el primer resultado me funciono de maravillas eh, aviso por las dudas.

Etiquetas: paginacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:04.