1. ホーム
  2. php

[解決済み] 週/月/全期間での投稿の並べ替え

2022-02-17 11:23:50

質問

そこで、基本的な設定でなんとか投稿を分類しています。これを日付-ASC、日付-DEC、コメントなどの週、月、すべての時間から変更したいのです。また、以下のコードを組み込むことで、すべての投稿ではなく、上位に投票された投稿のみをソートすることができればと思っています。

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

現時点での私の作業用トップレートページで、私のdate-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です。 OK、これは私が持っているものです、それはもはや動作しませんので、私はちょうどそれが行くべきだと思う場所に週/月/ALLTIMEを追加しました(私はそれが正しくないことを知っているが、私はちょうど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>

解決方法は?

質問のコメントにあるように、あなたの現在のコードベースは、あなたが望むことを行うことが可能ではありません。

wp-postratings FAQで質問されているようなことができます。 一定期間内に最も評価の高い投稿を表示する .
これを見れば、解決するはずです。