サポート » 使い方全般 » カテゴリー別、日付別投稿件数の表示

  • 解決済 suberuba

    (@suberuba)


    ※event calendarプラグインを使用しています。

    カテゴリーテンプレート内で下記コードを使い、カテゴリー一覧から選ばれたカテゴリーの
    記事件数を表示させています。
    <?php $counter = new WP_Query("posts_per_page=-1&cat=$cat");echo count($counter->posts) ."件"; ?>

    カレンダーを押された時は、選ばれた年月日(年月もしくは日)の記事件数の表示させたいのですが、どうしたら良いのか悩んでいます。
    現在の状態では、カレンダーから日付が選択された場合、全体に該当しているカテゴリー+投稿総数が表示されます。

15件の返信を表示中 - 1 - 15件目 (全15件中)
  • 自分でやりたいことを整理してみました。

    1.カテゴリーから記事を表示
     カテゴリー名+そのカテゴリーに該当する記事の総数

    2.カレンダーから記事を表示
     日付(y年m月 or y年m月d日)+その日付に該当する記事の総数

    ※event calendarプラグインを使用しているため、すべての記事は「イベント」という
    カテゴリーに該当している

    未検証
    archive.php, category.php, date.php, … の何れでも記事の総数は

    global $wp_query;
    echo $wp_query->found_posts . '件';

    kzさん、いつもお世話になっております。そして今回もありがとうございます。

    教えて頂いたコードで総数は取得できたのですが、カレンダーから日付を選択された
    場合の表記に困っています。

    ★「○○」の検索結果:○件と表示したい

    category.phpに下記コードを入れる。
    <?php
    echo ‘「’;
    if(is_date()){
    echo wp_title(”, true, ‘left’);
    }
    else{
    echo wp_title(”, true, ‘left’);}
    echo ‘ 」’;
    ?>
    の検索結果:
    <?php global $wp_query;
    echo $wp_query->found_posts . ‘件’; ?>

    is_dateで日付だったら、○年○月○日としたいのですがうまくいきません。
    お手数ですが、wp_titleから日付フォーマットを変更する方法、もしくは
    もっと簡単な条件分岐等がありましたら教えて頂けますでしょうか?

    if(is_date())
      echo get_the_time('Y年 n月 j日');

    で OK です。

    kzさん、ご返答ありがとうございます。
    教えて頂いたコードを試してみたのですが、下記のような結果になってしまいました。

    1.投稿がある年月もしくは年月日を選択すると・・・
    ・イベントが終了するのが一番遅い投稿の開始日が返ってくる。
     (event calenderプラグインで開始日〜終了日を指定しています)

    2.投稿がない年月を選択すると・・・
    ・値が入ってこない(「」のみ残る)

    カテゴリーテンプレート内で条件分岐しているのがいけないのでしょうか・・・?
    申し訳ありません・・・、だめな原因がわからないです

    category.php でなく
    archive.php で処理した方が良い気がします。
    参考:テンプレート階層

    何度も申し訳ありません・・・。category.phpを消してarchive.phpで同じように
    書いてみたのですが、やはり日付取得の場合のみ、イベントが終了するのが
    一番遅い投稿の開始日が返ってきます。

    <?php
    echo '「';
    if(is_date()){
    echo get_the_time('Y年 n月 j日');
    }
    else{
    echo wp_title('', true, 'left');
    }
    echo ' 」';
    ?>
    の検索結果:
    <?php global $wp_query;
    echo $wp_query->found_posts . '件'; ?>

    ・イベントが終了するのが一番遅い投稿の開始日が返ってくる。

    どうなって欲しいのか明記していただくと回答し易いです。

    event calenderプラグインで開始日〜終了日を指定しています

    開始日〜終了日までのアーカイブを取得しているということですか??
    ※event calender の詳細は知らないのです。

    年月アーカイブなのに日が出て困る、という話なら

    if(is_day()){
      echo get_the_time('Y年 n月 j日');
    }
    else if(is_month()){
      echo get_the_time('Y年 n月');
    }
    else{
      echo wp_title('', true, 'left');
    }

    参考:条件分岐タグ

    わかりにくい説明の上、何度も返事を頂き、お手数をおかけしております。

    このようになってほしいです。
    1.カテゴリーを選択した場合
    「カテゴリー名」の検索結果:「該当する記事数」件
    以下、該当の記事

    2.カレンダーから日付(年月or年月日)を選択した場合
    「選択した日付(年月or年月日)」の検索結果:「該当する記事数」件
    以下、該当の記事

    wp_title()を使うと選択された日付がきちんと返ってきます。
    しかし、「 2010 1月 1 」のようになってしまい、見た目がおかしいので
    2010年1月1日のようにしたいです。

    1.カテゴリーを選択した場合

    は、できていると思うので良しとして。
    以下、確認です。

    2.カレンダーから日付(年月or年月日)を選択した場合

    の年月の場合のURLが
    http://example.com/?m=201001
    http://example.com/201001
    年月日の場合のURLが
    http://example.com/?m=20100101
    http://example.com/20100101
    となっているのに
    2個上のコードで
    2010年1月
    2010年1月1日
    と表示されないですか?

    kzさん、度々申し訳ありません。

    下記コードを使用した場合の表示結果ですが・・・。

    カレンダーから日付(年月or年月日)を選択した場合
    ・2010年3月を選択した場合
     http://example.com/?m=201003&cat=1
     「2010年 2月 」の検索結果: ○件

    ・2010年3月21日を選択した場合
     http://example.com/?m=20100321&cat=1
    「2010年 2月 2日 」の検索結果: ○件

    <?php
    echo '「';
    if(is_day()){
      echo get_the_time('Y年 n月 j日');
    }
    else if(is_month()){
      echo get_the_time('Y年 n月');
    }
    else{
      echo wp_title('', true, 'left');
    }
    echo ' 」';
    ?>
    の検索結果:
    <?php global $wp_query;
    echo $wp_query->found_posts . '件'; ?>

    ※URL末尾のcat=1ですが、すべての投稿を「イベント」というカテゴリーに該当
    させています。(これが原因でしょうか・・・)

    event calendar 独自のクエリを拾ってくると OK でした。

    <?php
    global $wp_query;
    if(preg_match('/start<=\'([^\']+?)\'/', $wp_query->request, $match))
      $start = $match[1];
    
    echo '「';
    if(is_day()){
      echo mysql2date('Y年 n月 j日', $start);
    }
    else if(is_month()){
      echo mysql2date('Y年 n月', $start);
    }
    else{
      echo wp_title('', true, 'left');
    }
    echo ' 」';
    ?>
    の検索結果:
    <?php global $wp_query;
    echo $wp_query->found_posts . '件'; ?>

    ※ご参考:プラグイン名にプラグインへのリンクを付けると回答が付き易いと思います。

    kzさん、ご返答ありがとうございます。

    >プラグイン名にプラグインへのリンクを付けると回答が付き易いと思います。
    配慮が至らず、申し訳ありません。今更ですが下記がダウンロード先となっています。
    event calender
    http://wpcal.firetree.net/

    上記コードを試してみたところ、年月日の表示はうまくいったのですが、年月の
    取得がうまくいきません。なぜか、どの月を選択しても前月が表示されてしまいます。

    例:2010年3月を選択→「 2010年2月 」の検索結果: ○件

    プラグインが年月アーカイブの場合は 3月0日 とかにしてやがるので前月になります。

    else if(is_month()){
      $start = preg_replace('/0 0:0:0/', '01 0:0:0', $start);
      echo mysql2date('Y年 n月', $start);
    }

    で OK。

    Kzさん、ありがとうございます!
    教えて頂いたコードのおかげで解決しました。

    >event calendar 独自のクエリを拾ってくる
    こういった使い方、今後の参考になりました。

    また、お世話になることがあると思います。
    今後ともよろしくお願い致します。

15件の返信を表示中 - 1 - 15件目 (全15件中)
  • トピック「カテゴリー別、日付別投稿件数の表示」には新たに返信することはできません。