在Wordpress中获取随机帖子

pu3pd22g  于 11个月前  发布在  WordPress
关注(0)|答案(6)|浏览(134)

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

字符串

rkttyhzu

rkttyhzu1#

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

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

8wigbo56

8wigbo562#

我找到了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为你的按钮,导致随机职位。
感谢所有为您的帮助做出贡献的人...
干杯!干杯!

1l5u6lss

1l5u6lss3#

我发现这是更有用的有一个网址,将重定向到一个随机的职位,你可以使用作为链接在侧边栏或在菜单中.如果它是一个单一的WP网站,甚至在wp.com这真的很容易,为博客在

http://mygroovywpsite.me/

字符串
你需要做的就是在它后面加上?random

http://mygroovywpsite.me/?random


我发现这在我的多站点安装中的子站点上不起作用(也不是上面的wp_beginner代码),任何一种方法都只是加载主页。也许我有一些时髦的缓存问题。我在许多网站上这样做的方式是多几个步骤w/o插件。
首先在你的网站上创建一个名为“Random”/带有“random”的页面--它不需要任何内容
然后创建一个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;
}
?>


然后你会得到你博客上任何链接的重定向...../random w/o任何与.htaccess的搏斗
我这样做是因为我不得不修改查询,有时是为了自定义文章类型,有时是为了限制类别,等等。
我只有一个网站是一个问题,因为托管抑制使用mySQL查询与ORDER BY兰德()

vxf3dgd4

vxf3dgd44#

另一个简单的解决方案来显示随机帖子
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/

whhtz7ly

whhtz7ly5#

选中此

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

字符串

zfycwa2u

zfycwa2u6#

使用SQL。

<?php
$posts = $wpdb->get_results ( 
         "
         SELECT * 
         FROM your_table
         WHERE post_status = 'publish'
         ORDER BY RAND()
         LIMIT 1
         "
         );

$page_link = $posts[0]->post_name;
?>

字符串

相关问题