wordpress 自选文章排列方式

有些博客上有个非常不错的功能,在文章列表上有几个按钮“随机阅读”、“评论最多”、“按标题排列”等功能,其实现原理如下。

主要原理是改变 query_posts 函数的主循环来实现的。

构造链接

链接主要用于传递GET参数,让PHP程序知道你到底想怎么排序。在主题的index.php中你需要的位置插入以下代码,用于输出排序按钮的HTML,这个排序按钮的样式,你再自己写写css咯。需要注意的是以下代码会自动获取当前用户已选择的排序方式,并给这个排序按钮的 li 添加了class="current"

<code>
<h4>文章排序</h4>
<ul>
    <li><a <?php if ( isset($_GET['order']) && ($_GET['order']=='rand') ) echo 'class="current"'; ?> href="<?php echo get_option('home'); ?>/?order=rand" rel="nofollow">随机阅读</a></li>
    <li><a <?php if ( isset($_GET['order']) && ($_GET['order']=='commented') ) echo 'class="current"'; ?> href="<?php echo get_option('home'); ?>/?order=commented" rel="nofollow">评论最多</a></li>
    <li><a <?php if ( isset($_GET['order']) && ($_GET['order']=='alpha') ) echo 'class="current"'; ?> href="<?php echo get_option('home'); ?>/?order=alpha" rel="nofollow">标题排序</a></li>
</ul></code>

改变主循环

首先你得先在主题的index.php中找到以下语句:
if (have_posts())
然后在这句之前添加以下代码:

<code>if ( isset($_GET['order']) )
{
    switch ($_GET['order'])
    {
        case 'rand' : $orderby = 'rand'; break;
        case 'commented' : $orderby = 'comment_count'; break;
        case 'alpha' : $orderby = 'title'; break;
        default : $orderby = 'title';
    }

    global $wp_query;
    $args= array('orderby' => $orderby, 'order' => 'DESC');

    $arms = array_merge($args, $wp_query->query);
    query_posts($arms);
}

if (have_posts())
</code>

到此完成,你只需给上面的三个按钮添加样式即可。

0 thoughts on “wordpress 自选文章排列方式
添加一条新回复 回到顶部

亲爱的,主人已经关闭了这篇文章的评论 。