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

Paginación aleatoria (Por llamarlo de alguna manera)

Estas en el tema de Paginación aleatoria (Por llamarlo de alguna manera) en el foro de WordPress en Foros del Web. Hola a todos (: Veamos, lo que necesito, es un enlace que me lleve a una página aleatoria de la paginación. Pero no a un ...
  #1 (permalink)  
Antiguo 03/06/2011, 03:39
Avatar de okdek88  
Fecha de Ingreso: julio-2009
Mensajes: 22
Antigüedad: 15 años, 4 meses
Puntos: 0
Pregunta Paginación aleatoria (Por llamarlo de alguna manera)

Hola a todos (:

Veamos, lo que necesito, es un enlace que me lleve a una página aleatoria de la paginación. Pero no a un post aleatorio; la cuestión es que el diseño que estoy haciendo funciona con un solo post por página, y necesito que tenga el típico enlace "aleatorio", pero que no me lleve dentro de un post. Osea que el resultado no tire de "single.php", si no una página random del "index.php".

Espero no haberme liado mucho..

¿Se os ocurre alguna manera de hacer esto?

¡Gracias!
Unai.
  #2 (permalink)  
Antiguo 03/06/2011, 06:36
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: Paginación aleatoria (Por llamarlo de alguna manera)

No sé si habrá funciones de WP que te ayuden en su totalidad, pero se me ocurre el siguiente planteo:

- Detectar cuántas páginas hay en la paginación (eso debe ser fácil) y guardarlo en $max_pages
- Hacer una función que devuelva un número entero aleatorio en un rango comprendido entre {1, $max_pages} aunque excluyendo la página actual.
- Generar los enlaces correspondientes.
__________________
...___...
  #3 (permalink)  
Antiguo 03/06/2011, 06:52
Avatar de okdek88  
Fecha de Ingreso: julio-2009
Mensajes: 22
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Paginación aleatoria (Por llamarlo de alguna manera)

Gracias AlZuwaga, algo así imaginaba que tendría que usar. Pero ni idea de cómo hacerlo :S

Este es el código que tengo, pero que me lleva dentro del post:

Código PHP:
Ver original
  1. <?php $randomPost = $wpdb->get_var("SELECT guid FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' ORDER BY rand() LIMIT 1"); echo '<a href="'.$randomPost.'" title="Random"><img src="random.png" alt="Random"></a>'; ?>

¿Se podría adaptar de algún modo a lo que busco?
  #4 (permalink)  
Antiguo 03/06/2011, 08:26
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 5 meses
Puntos: 832
Respuesta: Paginación aleatoria (Por llamarlo de alguna manera)

Pega el código de tu index para ver cómo está construida la paginación.
  #5 (permalink)  
Antiguo 03/06/2011, 08:38
Avatar de okdek88  
Fecha de Ingreso: julio-2009
Mensajes: 22
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Paginación aleatoria (Por llamarlo de alguna manera)

Pues nada raro, más o menos como viene por defecto, cambiando el diseño y poco más:

Código HTML:
Ver original
  1. <div class="navigation">
  2.                 <?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } else { ?>
  3.  
  4.             <div class="alignleft" class="linkleft"><?php previous_posts_link('<img src="left.png">') ?></div>
  5.  
  6.  
  7.             <div class="linkcenter">
  8.  <?php $randomPost = $wpdb->get_var("SELECT guid FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' ORDER BY rand() LIMIT 1"); echo '<a href="'.$randomPost.'" title="Random"><img src="random.png" alt="Random"></a>'; ?>
  9.             </div>
  10.  
  11.  
  12.                 <div class="alignright" class="linkright"><?php next_posts_link('<img src="right.png">') ?></div>
  13.                 <?php } ?>
  14.             </div>

Quizás el titulo del hilo no es del todo correcto, es que la cosa no está en la paginación exactamente. El problema está en ese enlace del centro, el "random". Funciona bien para llevarme a un post aleatorio, pero ni idea de cómo hacer que me lleve a una página aleatoria de la paginación.

En cuanto a los permalinks de la paginación, por si sirve de algo, se ven tal que así: "/page/2/" (con la custom structure de permalinks /%postname%/).

Un saludo.
  #6 (permalink)  
Antiguo 03/06/2011, 08:55
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 5 meses
Puntos: 832
Respuesta: Paginación aleatoria (Por llamarlo de alguna manera)

Como dice Jerry Maguire: "Help me to help you".

Abre el archivo nuevamente, selecciona todo > copia. Luego regresa y pega el código.

Es preciso hacerlo porque muchos themes están construidos de manera distinta (la paginación es uno de los entuertos más frecuentes entre algunos "desarrolladores" de themes prefabricados). La línea que posteaste al principio constituye una gran novatada del fabricante. Es mejor ver el código entero para orientarte con mayor exactitud, en especial si no sabes php.

Al menos ya sabemos que la paginación es generada por wp-pagenavi (un plugin).
  #7 (permalink)  
Antiguo 03/06/2011, 09:04
Avatar de okdek88  
Fecha de Ingreso: julio-2009
Mensajes: 22
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Paginación aleatoria (Por llamarlo de alguna manera)

No te lo copié entero porque no lo vi necesario, es un theme muy básico, basado en twentyten, el theme default de wordpress. Ni si quiera usa wp-pagenavi, no he instalado el plugin, solo es que tiene soporte para el. Para el caso, ese trozo de código es inútil.

Espero que no te este sonando esto mal, agradezco y valoro muchísimo la ayuda desinteresada de la gente de este foro :D

Pero eso, busco más o menos lo que comentó AlZuwaga, que no tengo ni idea de cómo hacerlo. La paginación en si está correcta.

Pero si me equivoco y hace falta, te lo copio todo sin problema. Solo que no quiero que te leas todo ese código para nada ;)
  #8 (permalink)  
Antiguo 03/06/2011, 10:01
Avatar de Nekko
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Buenos Aires
Mensajes: 3.141
Antigüedad: 16 años, 8 meses
Puntos: 656
Respuesta: Paginación aleatoria (Por llamarlo de alguna manera)

Le hubieras pegado el código que te solicitó en vez de escribir esa explicación.
__________________
Taller para crear themes wordpress desde cero | Presupuestos para trabajos particulares vía MP
  #9 (permalink)  
Antiguo 03/06/2011, 10:08
Avatar de okdek88  
Fecha de Ingreso: julio-2009
Mensajes: 22
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Paginación aleatoria (Por llamarlo de alguna manera)

Es que no estoy seguro de que me haya entendido, porque no van por ahí los tiros. No se trata de la paginación, si no del código que necesito para que el enlace me lleve a una página aleatoria de la paginación, pero ésta no tiene nada extraño, está prácticamente como viene en wordpress por defecto.

Ahora, que no tengo problema en copiarlo si hace falta, eh? jj
  #10 (permalink)  
Antiguo 03/06/2011, 12:19
Avatar de Omura
Colaborador
 
Fecha de Ingreso: julio-2006
Ubicación: Peru
Mensajes: 3.491
Antigüedad: 18 años, 4 meses
Puntos: 185
Respuesta: Paginación aleatoria (Por llamarlo de alguna manera)

Cita:
Iniciado por okdek88 Ver Mensaje
...
Ahora, que no tengo problema en copiarlo si hace falta, eh? jj
okdek88, te aseguro que de la gente que esta tratando de ayudarte (AlZuwaga, metacortex, Nekko) ninguno tiene interés de ver tu código para otra cosa que no sea intentar ayudarte, o mas claro, ninguno esta interesado en robar tu código, entonces disculpa que sea tan duro pero ya teniendo las cosas claras, tienes 2 opciones, publicar tu código y dejar que te ayuden o seguir con la misma actitud y solo conseguir que se aburran y pasen a otro post, tu decides.
__________________
Mi error era de código... pero de código genético.
  #11 (permalink)  
Antiguo 03/06/2011, 13:07
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 5 meses
Puntos: 832
Respuesta: Paginación aleatoria (Por llamarlo de alguna manera)

Cita:
Iniciado por okdek88 Ver Mensaje
Es que no estoy seguro de que me haya entendido, porque no van por ahí los tiros.
Si tuvieras un dolor de estómago y el doctor te dice "abre la boca", saldrías corriendo del consultorio porque "por ahí no van los tiros".

La solicitud de pegar el código no ha sido con otra finalidad sino la de ver cómo se genera el array en tu plantilla. Comprobada esa parte hubiese sido sencillo decirte cómo construir correctamente lo te menciona AlZuwaga mediante un par de líneas de código que solucionarían el problema.

Cita:
Iniciado por okdek88 Ver Mensaje
Espero no haberme liado mucho..
...
  #12 (permalink)  
Antiguo 03/06/2011, 16:43
Avatar de j_aroche
Server Ninja
 
Fecha de Ingreso: agosto-2006
Ubicación: iPhone: 14.624481,-90.487457
Mensajes: 2.066
Antigüedad: 18 años, 3 meses
Puntos: 223
Respuesta: Paginación aleatoria (Por llamarlo de alguna manera)

Cita:
Iniciado por okdek88 Ver Mensaje
Pero eso, busco más o menos lo que comentó AlZuwaga, que no tengo ni idea de cómo hacerlo. La paginación en si está correcta.
Código PHP:
Ver original
  1. <?
  2. global $wp_query;
  3. $randompage = '/page/' . rand( 2, $wp_query->max_num_pages) .'/' ;
  4. ?>
  5. <a href="$randompage">Página al azar</a>

Esto genera un enlace a cualquier página "del index", desde la segunda hasta la ultima que tengas. La portada nunca se enlazará.
__________________
Blog: JavierAroche.com - Twitter: @j_aroche
  #13 (permalink)  
Antiguo 04/06/2011, 11:42
Avatar de okdek88  
Fecha de Ingreso: julio-2009
Mensajes: 22
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Paginación aleatoria (Por llamarlo de alguna manera)

Oye chicos, no hace falta ponerse tan agresivos.. realmente no pensé que fuese necesario, pero si estaba equivocado, pido disculpas por haceros perder el tiempo. No pienso que me vayáis a robar el código ni nada así. Buen rollo y tal :D

Y j_aroche, no me ha funcionado, me crea un enlace a /page/$randompage :S

Bueno, este es el index.php de mi theme (ET-Starter 1.4):
Código PHP:
Ver original
  1. <?php
  2.     global $options;
  3.         foreach ($options as $value) {
  4.             if (get_settings( $value['id'] ) === FALSE) {
  5.                 $$value['id'] = stripslashes( $value['std'] );
  6.             } else {
  7.                 $$value['id'] = stripslashes( get_settings( $value['id'] ) );
  8.             }
  9.         }
  10. ?>
  11. <?php get_header(); ?>
  12.  
  13. <?php /* Enables two or three columns */
  14. if ($et_threecolumn_disable == "false") { ?> <?php include(TEMPLATEPATH."/sidebar.php");?><?php } ?>
  15.  
  16.    <div class="content <?php if ($et_threecolumn_disable == "false") { ?> <?php echo $et_columnorder; ?> <?php } else { ?> content-two-column<?php echo $et_columnorder; ?> <?php } ?>">
  17.  
  18.     <?php if (have_posts()) : ?>
  19.  
  20.         <?php while (have_posts()) : the_post(); ?>
  21.  
  22.             <div class="post" id="post-<?php the_ID(); ?>">
  23.                 <h1><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h1>
  24.                 <h2><?php the_time('F jS, Y') ?> | <?php the_category(', ') ?> | <?php comments_popup_link('0 Comments', '1 Comment', '% Comments'); ?></h2>
  25.  
  26.                 <div class="entry">
  27.                     <?php the_content('Read More'); ?>
  28.                    
  29.                     <?php edit_post_link('Edit this entry.', '<p>', '</p>'); ?>
  30.                 </div>
  31.  
  32.                 <?php if (function_exists('the_tags')) { the_tags('<p class="postmetadata">Tags: ', ', ', '</p>'); } ?>
  33.             </div>
  34.  
  35.         <?php endwhile; ?>
  36.  
  37.             <div class="navigation">
  38.        
  39.             <div class="alignleft" class="linkleft"><?php previous_posts_link('<img src="left.png">') ?></div>
  40.        
  41.             <div class="linkcenter">
  42.  <?php $randomPost = $wpdb->get_var("SELECT guid FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' ORDER BY rand() LIMIT 1"); echo '<a href="'.$randomPost.'" title="Random"><img src="random.png" alt="Random"></a>'; ?>
  43.             </div>
  44.  
  45.                 <div class="alignright" class="linkright"><?php next_posts_link('<img src="right.png">') ?></div>
  46.                
  47.             </div>
  48.  
  49.     <?php else : ?>
  50.    
  51.         <div class="post">
  52.             <h2 class="center">Not Found</h2>
  53.             <p class="center">Sorry, but you are looking for something that isn't here.</p>
  54.         </div>
  55.  
  56.     <?php endif; ?>
  57.  
  58.     </div>
  59.  
  60.  
  61. <?php include(TEMPLATEPATH."/primary-sidebar.php");?>
  62.  
  63. <?php get_footer(); ?>

¡Gracias de nuevo por vuestro tiempo!
  #14 (permalink)  
Antiguo 04/06/2011, 12:09
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: Paginación aleatoria (Por llamarlo de alguna manera)

Cita:
Iniciado por okdek88 Ver Mensaje
Y j_aroche, no me ha funcionado, me crea un enlace a /page/$randompage :S
Momento... me da la impresión que algo sabés de PHP.. al menos lo necesario como para detectar el error que j_aroche cometió al usar una variable de PHP directamente en el código HTML.

Y como sospecho que hubo un poco de mofa en todo esto, mi participación aquí termina.
__________________
...___...
  #15 (permalink)  
Antiguo 04/06/2011, 12:15
Avatar de okdek88  
Fecha de Ingreso: julio-2009
Mensajes: 22
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Paginación aleatoria (Por llamarlo de alguna manera)

AlZuwaga, ¿lo dices por mi? No tengo la menor idea de PHP...
  #16 (permalink)  
Antiguo 04/06/2011, 14:18
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 19 años
Puntos: 890
Respuesta: Paginación aleatoria (Por llamarlo de alguna manera)

<a href="<?php print $randompage ?>">Página al azar</a>

Se terminó. Tema cerrado y a otra cosa.
__________________
Drupal Argentina

Etiquetas: paginacion, random, aleatoria
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 17:20.