先给个思路,首先获取所有想被调用的文章(一般只要调出文章的id即可),将这些文章写入一个数组,然后写一个随机调用方法,从数组中随即调用文章id即可。
但是wordpress有随机调用文章的方法,那就好办了。
先上随机读取文章的代码:
<?php
$randargs = array(
‘ignore_sticky_posts’ => 1 ,//取消文章置顶 如果不加这一行,输出的文章将包括设置的置顶文章
‘showposts’ => 10,//文章数量 -1是展示所有文章
‘orderby’ => ‘rand’ //随机排序
);
query_posts($randargs );
while ( have_posts() ) : the_post(); ?>
<div class=”TopTitle”><a href=”<?php the_permalink(); ?>” title=”<?php the_title(); ?>”><?php the_title(); ?></a></div>
<?php
endwhile;
wp_reset_query(); ?>
以上意思就是随机从数据库读取十篇文章,然后输出,把’showposts’ => 10改成’showposts’ => 1 就是随机读取一篇文章,找到门道没?只要我们获取这篇随机文章的href,是不是就可以解决问题了?好,我们把他封装成方法:
function getRandHref() {
$randUrl = “”;
$randargs = array(
‘ignore_sticky_posts’ => 1,
‘showposts’ => 1,
‘orderby’ => ‘rand’
);
query_posts($randargs);
while (have_posts()):
the_post();
$randUrl=get_permalink();
endwhile;
wp_reset_query();
return $randUrl;
}
这段代码加在functions.php里,然后在你想点击的那个链接里调用,<a href=”<?php echo getRandHref(); ?>”>点击随机跳转文章</a>
但是这段代码相对低效,因为他隐形的调用了太多wordpress的后台方法,我们可以直接操作数据库。
function getRandHref() {
global $wpdb;
$randUrl = “”;
$sql = “SELECT ID FROM $wpdb->posts WHERE post_status = ‘publish’ “;
$sql .= “AND post_title != ” “;
$sql .= “AND post_type = ‘post’ “;
$sql .= “ORDER BY RAND() LIMIT 0 , 1 “;
$randposts = $wpdb->get_results($sql);
$output = ”;
foreach ($randposts as $randpost) {
$randUrl = get_permalink($randpost->ID);
}
return $randUrl;
}
未经允许不得转载:前端撸码笔记 » WordPress怎样设置一个链接,跳转到随机文章啊?