2011-12-29 29 views
7

¿Cómo obtengo una publicación aleatoria en Wordpress?Obtener publicación aleatoria en Wordpress

Me gustaría mostrar un botón en una página que, cuando se presiona, va a una publicación al azar del blog. No quiero que se muestre una publicación aleatoria en la página, solo quiero un enlace que conduzca a esa publicación. Intenté buscar un código en Google y aquí en stackoverflow pero no tuve éxito.

Gracias ...

ACTUALIZACIÓN:

Aquí está mi código de la plantilla:

<?php /*Template Name: Random*/ ?> 

<?php get_header(); ?> 

<nav><?php wp_nav_menu(array('menu' => 'Main Nav Menu')); ?></nav> 

<div id="main-content-archive"> 

<div class="grey-text">Random post</div> 

     <?php $query = new WP_Query(array ('orderby' => 'rand', 'posts_per_page' => '1'));?> 

     <?php if (have_posts()) : while ($the_query->have_posts()) : $the_query->the_post(); 
     echo '<li>'; 
     the_title(); 
     echo '</li>'; 
     ?> 

<?php endwhile; ?> 

<?php else : ?> 

    <h2>Not Found</h2> 

<?php endif; ?> 

</div> 
<?php get_sidebar(); ?> 
<?php get_footer(); ?> 
+0

Tal vez esto podría ayudarle a: [post complemento al azar] (http://wordpress.org/extend/plugins/random-posts-plugin/) – Cyclonecode

+0

Gracias pero esperaba un código simple. Este complemento no permite la personalización del enlace en el sentido de que puedo reemplazar la lista de publicaciones recientes con un botón. ¿Alguna otra idea? – rlesko

+0

@rlesko a) ** no ** use variables que podrían ser fácilmente globalizadas por core - no use "' $ query' "," '$ post'" etc ... En su lugar use p. Ej. '$ myQuery' o algo por el estilo ... –

Respuesta

5

He encontrado this puesto que me dio los resultados deseados ...

Aquí es una copia de solución/pegado de la entrada del blog wpbeginner. Sin intenciones de infringir los derechos de autor.

Sólo agregue el código siguiente al archivo functions.php:

add_action('init','random_add_rewrite'); 
function random_add_rewrite() { 
    global $wp; 
    $wp->add_query_var('random'); 
    add_rewrite_rule('random/?$', 'index.php?random=1', 'top'); 
} 

add_action('template_redirect','random_template'); 
function random_template() { 
    if (get_query_var('random') == 1) { 
      $posts = get_posts('post_type=post&orderby=rand&numberposts=1'); 
      foreach($posts as $post) { 
        $link = get_permalink($post); 
      } 
      wp_redirect($link,307); 
      exit; 
    } 
} 

Uso mydomain.com/random/ como su href para su botón que lleva a la entrada al azar.

Gracias a todos los que contribuyeron para su ayuda ...

Saludos!

+0

Esta es una solución interesante, aunque errónea por diseño: debería reparar el código original, ya que genera una redirección innecesaria;) –

7

crear una plantilla de página, y utilizar el siguiente código para obtener un puesto de azar:

//Create WordPress Query with 'orderby' set to 'rand' (Random) 
$the_query = new WP_Query(array ('orderby' => 'rand', 'posts_per_page' => '1')); 
// output the random post 
while ($the_query->have_posts()) : $the_query->the_post(); 
    echo '<li>'; 
    the_title(); 
    echo '</li>'; 
endwhile; 

// Reset Post Data 
wp_reset_postdata(); 

luego en una página, solo use:

<a href="the link to the page">see a random post</a> 
+1

Parece que no funciona. Por favor revisa la actualización en la pregunta. – rlesko

+0

@rlesko ¿Podría ser una publicación pegajosa? Podrías intentar establecer el argumento 'ignore_sticky_posts' en **' false' ** :) De lo contrario, tienes algunos errores importantes en tu código: he comentado tu pregunta;) –

+0

No es una publicación pegajosa, simplemente no entiendo muy bien cómo esto la consulta funciona El orden por "rand" simplemente cambiará el orden de las publicaciones que se han consultado, y al decirle posts_per_page of 1 solo devuelve una sola publicación. Entonces devuelve una publicación, luego aleatoriza la orden (también conocida como la misma publicación). – clark

1

Comprobar Esta

<ul> 
<?php 
$args = array('numberposts' => 5, 'orderby' => 'rand'); 
$rand_posts = get_posts($args); 
foreach($rand_posts as $post) : ?> 
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> 
<?php endforeach; ?> 
</ul> 
3

me parece que es más útil tener una URL que redirige a un puesto de azar que se puede utilizar como enlace en la barra lateral o en los menús. Si se trata de un solo sitio WP e incluso en wp.com es muy fácil, para un blog en

http://mygroovywpsite.me/ 

Todo lo que necesita hacer es anexar con? Aleatoria

http://mygroovywpsite.me/?random 

encontré este hizo no funciona (ni el código wp_beginner anterior) en subsitios en mi instalación de varios sitios, cualquiera de los enfoques acaba de cargar la página de inicio. Tal vez tuve algunos problemas de caché funky. La forma en que hago esto en muchos sitios es unos cuantos pasos más sin complementos.

En primer lugar hacer una página en su sitio llamado "Random"/con la babosa "al azar" - que no necesita ningún contenido en ella

A continuación, cree una plantilla de página-random.php

<?php 
/* 
Random Post Picker 
Use on page to send viewer to random post optionally mod query 
*/ 

// set arguments for WP_Query on published posts to get 1 at random 
$args = array(
    'post_type' => 'post', 
    'post_status' => 'publish', 
    'posts_per_page' => 1, 
    'orderby' => 'rand' 
); 

// It's time! Go someplace random 
$my_random_post = new WP_Query ($args); 

while ($my_random_post->have_posts()) { 
    $my_random_post->the_post(); 

    // redirect to the random post 
    wp_redirect (get_permalink()); 
    exit; 
} 
?> 

Luego obtiene la redirección para cualquier enlace en su blog ...../al azar sin ninguna lucha con.htaccess

que he hecho de esta manera debido a que he tenido que modificar la consulta, a veces de los tipos personalizados de correos, a veces para restringir a la categoría, etc.

que sólo tenía un sitio que era un problema porque el alojamiento suprimió el uso de consultas MySQL con ORDER BY RAND()

+0

Funciona como el encanto. –

0

Otra solución simple para mostrar al azar Mensaje

1.En primer lugar una crear una página personalizada plantilla. ¡Nómbralo como una publicación aleatoria o un nombre de tu elección!

2.Open la página y elimine el bucle wp defecto y pega el siguiente código

3.To cambiar el nº de entrada cambiar el número ‘1’ a su elección!

<?php 
query_posts(array('orderby' => 'rand', 'showposts' => 1)); 
if (have_posts()) : 
while (have_posts()) : the_post(); ?> 

<h1><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1> 

<?php the_content(); ?> 

<?php endwhile; 

endif; ?> 

fuente: http://www.yengkokpam.com/displays-random-posts-in-a-page/

Cuestiones relacionadas