WordPress让访客选择文章的排序方式

林继 WordPress 1,889 共写了360个字 (2012-06-09 21:16:58) 没有评论 打印 扫描二维码 百度已收录

构造链接

链接主要用于传递GET参数,让PHP程序知道你到底想怎么排序。在主题的index.php中你需要的位置插入以下代码,用于输出排序按钮的HTML,这个排序按钮的样式,你再自己写写css咯。需要注意的是以下代码会自动获取当前用户已选择的排序方式,并给这个排序按钮的 li 添加了class=”current”(另外,记得把http://www.ludou.org改成你的博客首页网址哦):

  1. <h4>文章排序</h4>
  2. <ul>
  3.     <li><a <?php if ( isset($_GET['order']) && ($_GET['order']=='rand') ) echo 'class="current"'; ?> href="http://www.ludou.org/?order=rand" rel="nofollow">随机阅读</a></li>
  4.     <li><a <?php if ( isset($_GET['order']) && ($_GET['order']=='commented') ) echo 'class="current"'; ?> href="http://www.ludou.org/?order=commented" rel="nofollow">评论最多</a></li>
  5.     <li><a <?php if ( isset($_GET['order']) && ($_GET['order']=='alpha') ) echo 'class="current"'; ?> href="http://www.ludou.org/?order=alpha" rel="nofollow">标题排序</a></li>
  6. </ul>

改变主循环

首先你得先在主题的index.php中找到以下语句:

  1. if (have_posts())

然后在这句之前添加以下代码:

  1. if ( isset($_GET['order']) )
  2. {
  3.     switch ($_GET['order'])
  4.     {
  5.         case 'rand' : $orderby = 'rand'; break;
  6.         case 'commented' : $orderby = 'comment_count'; break;
  7.         case 'alpha' : $orderby = 'title'; break;
  8.         default : $orderby = 'title';
  9.     }
  10.  
  11.     global $wp_query;
  12.     $args= array('orderby' => $orderby, 'order' => 'DESC');
  13.  
  14.     $arms = array_merge($args, $wp_query->query);
  15.     query_posts($arms);
  16. }
  17.  
  18. if (have_posts())

好了,就这么简单,复制粘贴,轻轻松松实现排序效果,你…懂了吗?

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

< >