サポート » 使い方全般 » 新着記事一覧でカテゴリーを絞った上で先頭に固定表示

  • 解決済 hoi

    (@hoi)


    新着記事一覧等でカテゴリーを絞った上で先頭に固定表示をしたいです。
    query_postsを使用しているのですがうまくいきません。
    ご教授いただけますでしょうか?

    <ul>
    <?php query_posts('posts_per_page=5&ignore_sticky_posts=0'); ?>
     <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
     <li><a href="<?php the_permalink(); ?>"><?php the_title();?></a></li>
    <?php endwhile; endif; wp_reset_query(); ?>
    </ul>

    上記ですと先頭に固定表示を一番上に持っていけますが、全カテゴリの記事を取得します。

    <ul>
    <?php query_posts('posts_per_page=5&ignore_sticky_posts=0&cat=2'); ?>
     <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
     <li><a href="<?php the_permalink(); ?>"><?php the_title();?></a></li>
    <?php endwhile; endif; wp_reset_query(); ?>
    </ul>

    上記ですとカテゴリーは絞れますが先頭に固定表示できません。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    先頭に固定表示は、クエリーオブジェクトの is_home * が true になっていることと、ページ送りがなされていないことが条件です。
    * 条件分岐タグの is_home() とは違います。

    このため、cat=2 の指定を行った場合、is_home が false となってしまうため、先頭に固定表示が反映されないというわけです。

    これを解消するには、該当箇所の query_posts を行った際に、is_home が true となること、query_posts 以外では、影響を与えないことが必要となります。
    query_posts の直前で、is_home を true に設定するフックを追加、直後で該当フックを削除することで、実現できるかと思います。

    functions.php

    function enable_sticky_posts( $wp_query ) {
        $wp_query->is_home = true;
    }

    テンプレート

    <?php add_action( 'pre_get_posts', 'enable_sticky_posts' );
    query_posts( 'posts_per_page=5&ignore_sticky_posts=0&cat=2' );
    remove_action( 'pre_get_posts', 'enable_sticky_posts' ); ?>

    トピック投稿者 hoi

    (@hoi)

    お礼が遅くなりまして、申し訳ございませんでした。
    先頭に固定表示はwp_queryがis_homeでないと効かないのですね。
    勉強になりました。
    いただきましたコードにて理解できました。
    ありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「新着記事一覧でカテゴリーを絞った上で先頭に固定表示」には新たに返信することはできません。