文章转自:https://blog.iplayloli.com/redirect-to-random-post.html

当我们的博客文章很多时,无法很直观的展示所有文章给读者,这时候我们可随机给读者显示一篇文章。
下面这个方法也是在网上找的一些教程累积的方法,不需要修改typecho源文件,只需要在主题文件夹下,新建一个php文件,名字自定义,然后把以下代码扔进去:

    <?php
    /**
     * 手气最佳
     *
     * @package custom
     */
    if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
    <?php
    $db = Typecho_Db::get();
    $sql = $db->select('MAX(cid)')->from('table.contents')
        ->where('status = ?','publish')
        ->where('type = ?', 'post')
        ->where('created <= unix_timestamp(now())', 'post');
    $result = $db->fetchAll($sql);
    $max_id = $result[0]['MAX(`cid`)'];//POST类型数据最大的CID
    $sql = $db->select('MIN(cid)')->from('table.contents')
        ->where('status = ?','publish')
        ->where('type = ?', 'post')
        ->where('created <= unix_timestamp(now())', 'post');
    $result = $db->fetchAll($sql);
    $min_id = $result[0]['MIN(`cid`)'];//POST类型数据最小的CID
    $result = NULL;
    while($result == NULL) {
        $rand_id = mt_rand($min_id,$max_id);
        $sql = $db->select()->from('table.contents')
            ->where('status = ?','publish')
            ->where('type = ?', 'post')
            ->where('created <= unix_timestamp(now())', 'post')
            ->where('cid = ?',$rand_id);
        $result = $db->fetchAll($sql);
    }
    ?>
    <!--下面就是实现显示跳转到随机文章-->
    <?php $target = Typecho_Widget::widget('Widget_Abstract_Contents')->filter($result['0']); ?>
    <!--跳转-->
      <?php $this->response->redirect($target['permalink'],307); ?>

好了,然后在后要新建一个自定义页面,引用这个php文件即可。

实际效果请看他的博客http://www.hzv5.cn/ 导航栏手气按钮吧

来源:https://qqdie.com/archives/jump-to-an-article.html