【问题标题】:Sorting posts by week/month/all time按周/月/所有时间对帖子进行排序
【发布时间】:2012-09-19 03:02:56
【问题描述】:

所以我设法用一些基本设置对我的帖子进行了排序。我想从 date-asc、date-dec、cmets 等周、月、所有时间更改它。我还希望合并以下代码,仅对投票最多的帖子进行排序,而不是对所有帖子进行排序

meta_key=votes_count&orderby=meta_value_num&order=DESC&posts_per_page=10

目前我的工作评分最高的页面,它对我的​​日期-asc、标题等进行排序:

<?php
if( isset($_GET['o']) && $_GET['o'] != '')
      {
          $order = $_GET['o'];
          switch($order)
          {
            case 'date-asc': $orderby = 'order=ASC';
                        $msg = 'Date Ascending';
                          break;

            case 'date-desc': $orderby = 'order=DESC';
                        $msg = 'Date Descending(default)';
                          break;

            case 'date-mod': $orderby = 'orderby=modified';
                            $msg = 'Date Modified';
                           break;

            case 'title-asc': $orderby = 'orderby=title&order=ASC';
                            $msg = 'Title A-Z';
                            break;

            case 'title-desc': $orderby = 'orderby=title&order=DESC';
                            $msg = 'Title Z-A';
                            break;

            case 'comment': $orderby = 'orderby=comment_count';
                            $msg = 'Comment Count';
                            break;
          }
      }
      else
      {
          $orderby = 'order=DESC';
          $msg = 'Date Descending (default)';
      }
?>

<div id="content">

<div id="sorter-container">


<h2 id="sort-heading">Posts ordered by:<?php echo $msg; ?></h2>
    <select id="order-by">
        <option value="date-desc" <?php echo (!isset($order) || $order == '' || $order == 'date-desc')? 'selected="selected"':''; ?>>Date Desc. (default)</option>
        <option value="date-asc" <?php echo ($order == 'date-asc')? 'selected="selected"':''; ?>>Date Asc</option>
        <option value="date-mod" <?php echo ($order == 'date-mod')? 'selected="selected"':''; ?>>Date Modified</option>
        <option value="title-desc" <?php echo ($order == 'title-desc')? 'selected="selected"':''; ?>>Title Desc.</option>
        <option value="title-asc" <?php echo ($order == 'title-asc')? 'selected="selected"':''; ?>>Title Asc.</option>
        <option value="comment" <?php echo ($order == 'comment')? 'selected="selected"':''; ?>>Comments Count</option>
    </select>
</div>
    <script type="text/javascript">
            var orderby = jQuery('#order-by');
            var str;
            orderby.change(function(){
                str = jQuery(this).val();
                 window.location.href = "<?php echo home_url(); ?>/top-rated/?o="+str;
            });
  </script>

EDIT2: 好的,这就是我所拥有的,它不再起作用了,所以我只是继续并在我认为应该去的地方添加了周/月/所有时间(我知道它不正确,但我不确定如何将排序限制为7天等

<?php
if( isset($_GET['o']) && $_GET['o'] != '')
      {
          $order = $_GET['o'];
          switch($order)
          {
            case 'week': $orderby = 'meta_key=votes_count&orderby=meta_value_num&order=DESC&WEEK&posts_per_page=10';
                        $msg = 'This Week (default)';
                          break;

            case 'month': $orderby = 'meta_key=votes_count&orderby=meta_value_num&order=DESC&MONTH&posts_per_page=10';
                            $msg = 'This Month';
                           break;

            case 'alltime': $orderby = 'meta_key=votes_count&orderby=meta_value_num&order=DESC&ALLTIME&posts_per_page=10';
                            $msg = 'All Time';
                            break;
      else
      {
          $orderby = 'order=DESC';
          $msg = 'This Week (default)';
      }
?>

<div id="content">

<div id="sorter-container">


<h2 id="sort-heading">Posts ordered by:<?php echo $msg; ?></h2>
    <select id="order-by">
        <option value="week" <?php echo (!isset($order) || $order == '' || $order == 'week')? 'selected="selected"':''; ?>>This Week (default)</option>
        <option value="month" <?php echo ($order == 'month')? 'selected="selected"':''; ?>>This Month</option>
        <option value="alltime" <?php echo ($order == 'alltime')? 'selected="selected"':''; ?>>All Time</option>
    </select>
</div>

【问题讨论】:

  • 对不起,我稍微编辑了 OP。只想按周、月、所有时间而不是当前位置(date-des、date-asc、title、cmets 等)对我评价最高的帖子进行排序
  • 我是这么想的,你卡在哪里了?所有代码似乎都已到位。您只需要更改&lt;option value""&gt;case 语句。您已经知道orderby=meta_value_num,这是人们容易陷入困境的一点。
  • 我不能靠自己做到这一点,我找到了一个很棒的教程哈哈 :) 但是,当我尝试将我的选项更改为周、月时......我不确定我实际上必须做什么改变。我检查了谷歌,wordpress codex,php help...然后我迷路了/困惑。
  • 你不是编码员吗?您知道在哪里寻找不或者您需要更多帮助吗?
  • 是什么泄露了它 :) 不,不是编码员,但我在工作时正在学习一些东西。即使我看到如何做一个例子,我想我可以解决剩下的问题。感谢您保持此线程继续运行,感谢。

标签: php wordpress sorting filter


【解决方案1】:

如问题的 cmets 中所述,您当前的代码库无法执行您想要的操作。

wp-postratings 可以完全按照您的意愿在常见问题解答中有一个问题在给定期间显示最高评分的帖子
看看那里你应该能够弄清楚这一点。

【讨论】:

  • 我之前尝试过那个插件,但我可能需要再看看它。我目前正在下载 PHP 基础教程,希望这也会有所帮助。唯一的问题是,自从评级系统启动并运行以来,我现在已经找到了它......是否值得开始另一个线程,尝试修改我所拥有的?
  • 好吧,问题是你不是程序员。我建议让编码人员参与进来。
猜你喜欢
  • 1970-01-01
  • 2017-08-10
  • 2014-08-15
  • 2018-07-07
  • 1970-01-01
  • 1970-01-01
  • 2016-12-30
  • 2013-01-01
  • 2021-10-05
相关资源
最近更新 更多