サポート » 使い方全般 » カテゴリー別の新着を、トップページに2種類表示

  • WordPressバージョンアップ後に、以下がうまく機能しなくなりました。
    記述も含めて、改善策などあればご教授いただければ大変助かります。

    ●実行したいこと

    トップページに、投稿の新着をカテゴリーで2種類に分けてリストさせたい。
    1種類は、カテゴリー「news」を含む投稿を、最新5件リスト。
    もう1種類は、カテゴリー「news以外」の投稿を、最新5件リスト。

    ●以下の記述で、以前までは想定した動作をしていた

    <div id="news">
    <dl>
    <?php global $post; $newsposts = get_posts('numberposts=5&category=1'); foreach($newsposts as $post) : setup_postdata($post); ?>
    <dt><?php the_date('m/d'); ?></dt>
    <dd><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></dd>
    <?php endforeach; ?>
    </dl>
    </div>
    <div id="blog">
    <dl>
    <?php global $post; $blogposts = get_posts('numberposts=5&category=-1'); foreach($blogposts as $post) : setup_postdata($post); ?>
    <dt><?php the_date('m/d'); ?></dt>
    <dd><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></dd>
    <?php endforeach; ?>
    </dl>
    </div>

    ●アップロード後の不具合内容

    <div id=”news”>~

    は、正常に表示されている(newsのカテゴリーに投稿された記事が、新着順に5件)。

    <div id=”blog”>~

    は、news以外の投稿が5件表示されているが「古い日付順」となっている。

    並び順・並べ替え引数を加えて、様々に変えてみましたが(orderby=dateなど)、並びは古い日付順になったままで、「新着順」にすることができません。
    表示する件数(numberposts)を変更してみたところ、こちらは機能しているようです。

    正常に機能している、<div id=”news”>~の方で、同様の並び順パラメータを変更すると、こちらはコントロールできました。

    古いwordpressのバージョン(3.0)で確認したところ、このような現象は発生しませんでした。

    解決策があれば、たいへん助かります。
    どうぞよろしくお願い致します。

3件の返信を表示中 - 1 - 3件目 (全3件中)
    • 2個所ある global $post; を削除
    • 2か所ある endforeach の後に、 wp_reset_postdata() を追加
      <?php endforeach; wp_reset_postdata(); ?>

    でどうでしょう?

    トピック投稿者 TAKK770

    (@takk770)

    LVP8様

    ご指摘の通り、削除・追加を行ってみましたが、変化はありませんでした。

    ちなみに、除外したいカテゴリーnews(id=1)に加えて、その他のカテゴリー(id=2,3…)を記述した場合、id=1を除いたid=2,3が、デフォルトの降順(最新の投稿順)でソートされました。

    get_posts('numberposts=5&category=-1,2,3')

    調べた限りでは、category=-1と単体?で記述した場合に、orderがコントロールできずに、必ず昇順(古い投稿順)となるようです。
    カテゴリーはクライアントが自由に追加していく仕様にしているので、category=-1で新着順に並べられないと、困ったなというところです…

    $blogposts = get_posts( array(
        'posts_per_page' => 5,
        'category__not_in' => array(1),
        'order' => 'DESC' // 念のため
    ));

    でどうでしょう?

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「カテゴリー別の新着を、トップページに2種類表示」には新たに返信することはできません。