• 解決済 ikesu

    (@ikesu)


    個別記事に「新着(新規記事)」「表示中のカテゴリ」「指定カテゴリ」の3つの一覧を記事の重複なしで表示させた上で、「表示中のカテゴリの一覧」は一部のカテゴリを除外したいと思っています。

    「表示中のカテゴリの一部を除外」は、複数のカテゴリに所属する記事の場合に特定のカテゴリを除外するのが目的です。

    現在は下記のコードを使用していますが、記事の重複がでてしまい、特定カテゴリの除外もできていない状態です。

    ほかのコードも色々試してみましたが条件を満たすことができませんでしたので教えてください。複雑な質問になってしまい恐縮ですがよろしくお願いします。

    <div class="topbody">
    <h3>表示中のカテゴリ</h3>
    <?php
    foreach((get_the_category()) as $cat) {
    $cat_id = $cat->cat_ID ;
    break ;
    }
    $query = 'cat=' . $cat_id. '&showposts=4';
    query_posts($query) ;
    ?>
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    //HTML
    <?php endwhile; endif; ?>
    <?php wp_reset_query(); ?>
    </div>
    
    <div class="subbody">
    <h3>新規記事</h3>
    <?php
    $post__not_in_ids = array();
    $args = array(
        'posts_per_page' => 4,
        'cat' => 'cat_ID',
    );
    $new_posts = get_posts( $args );
    foreach ( $new_posts as $post ) :
        setup_postdata( $post );
        $post__not_in_ids[] = get_the_ID();
     ?>
    //HTML
     <?php endforeach; ?>
    </div>
    
    <div class="subbody">
    <h3>指定カテゴリ</h3>
    <?php
    $cat_a_args = array(
        'posts_per_page' => 4,
        'cat' => 10,
        'post__not_in' => $post__not_in_ids
    );
    $cat_a_posts = get_posts( $cat_a_args );
    foreach ( $cat_a_posts as $post ) :
        setup_postdata( $post );
     ?>
    //HTML
     <?php endforeach; ?>
    </div>
    <?php wp_reset_query(); ?>
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    「表示中のカテゴリの一覧」は一部のカテゴリを除外

    category__not_in で除外したいカテゴリのIDを指定してください。

    関数リファレンス/WP Query カテゴリーのパラメータ
    上記は、WP_Queryでの指定ですが、query_postsやget_postsでも同じ使い方ができます。

    また、表示中のカテゴリで指定するIDが、除外するカテゴリと同じにならないよう注意する必要があります。

    3つの一覧を記事の重複なしで表示

    指定カテゴリでは、post__not_in で新着記事で表示される記事との重複を避ける指定がありますが、新着記事の指定には、この指定がないほか、表示中のカテゴリで表示した記事のIDを保存しておくコードが存在していません。

    トピック投稿者 ikesu

    (@ikesu)

    返信ありがとうございます

    また、表示中のカテゴリで指定するIDが、除外するカテゴリと同じにならないよう注意する必要があります。

    「表示中のカテゴリの一覧」以外に影響が出ていることを考慮していませんでした。
    表示中のカテゴリでの一覧には問題ありませんでしたが、パン屑リストなど他の部分で不都合がありましたので、最終的にはタグに変換して対処することにしました。

    表示中のカテゴリで表示した記事のIDを保存しておくコードが存在していません。

    現時点では実現が難しいということですね。
    できないということが分かりスッキリしました。

    ありがとうございました。解決済みとさせていただきます。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「個別記事に3種類の一覧を重複なしで表示させたい」には新たに返信することはできません。