在Wordpress中随机发布

时间:2011-12-29 19:20:20

标签: wordpress random

如何在Wordpress中随机发帖?

我想在页面上显示一个按钮,当按下该按钮时,会从博客中随机发布一个帖子。我不希望在页面上显示随机帖子,我只想要一个指向该帖子的链接。 我尝试在Google上搜索代码,然后在stackoverflow上搜索,但没有成功。

...谢谢

更新

这是我的模板代码:

<?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(); ?>

5 个答案:

答案 0 :(得分:8)

创建页面模板,并使用以下代码获取随机帖子:

//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();

然后在页面中,只需使用:

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

答案 1 :(得分:5)

我发现this帖子给了我想要的结果......

这是从wpbeginner博客文章中复制/粘贴的解决方案。没有版权侵权。

只需将以下代码添加到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;
   }
}

使用mydomain.com/random/作为导致随机发布的按钮的href

感谢所有为您提供帮助的人...

干杯!

答案 2 :(得分:4)

我发现将URL重定向到随机帖子更有用,您可以将其用作侧边栏或菜单中的链接。如果它是一个单一的WP站点,甚至在wp.com上,它很容易,对于一个博客

http://mygroovywpsite.me/

您需要做的只是附加?random

http://mygroovywpsite.me/?random

我发现这在我的多站点安装中的子站点上不起作用(也没有上面的wp_beginner代码),这两种方法都只是加载了主页。也许我有一些时髦的缓存问题。我在许多网站上执行此操作的方法是使用插件的更多步骤。

首先在您的网站中创建一个名为&#34; Random&#34; /与slug&#34;随机&#34; - 它不需要任何内容​​

然后创建一个page-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;
}
?>

然后你可以重新指导你博客上的任何链接..... /随机w / o任何与.htaccess的摔跤

我已经这样做了,因为我必须修改查询,有时候是自定义帖子类型,有时是限制类别等。

我只有一个网站有问题,因为托管使用ORDER BY RAND()

来抑制使用mySQL查询

答案 3 :(得分:3)

显示随机发布的另一个简单解决方案

1.首先创建一个自定义页面模板。将其命名为随机帖子或您选择的名称!

2.打开页面并删除默认的wp循环并粘贴下面的代码

3.要更改帖子的号码,请将号码“1”更改为您的选择!

 <?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; ?>

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

答案 4 :(得分:1)

检查此

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