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