サポート » 使い方全般 » カテゴリ内で特定のカスタムフィールドを持つ記事を表示

  • minoya

    (@minoya)


    各カテゴリ一覧(category.php)で
    そのカテゴリーに属している記事のうち
    特定のカスタムフィールド「pickup」に値「1」を持つ記事だけを
    ランダムで5件ほど表示したいと考えています。

    <?php
    $args = array(
    ‘posts_per_page’ => 5,
    ‘post_type’ => ‘post’,
    ‘meta_key’ => ‘pickup’,
    ‘meta_value’ => ‘1’
    );
    $the_query = new WP_Query( $args );
    ?>
    <?php if( $the_query->have_posts() ): ?>
    <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>

    これでカスタムフィールドに1が入ったものだけを表示させることはできたのですが
    カテゴリーで絞られていません。。
    またできればランダムで表示をしたいのです。

    また、同じページ内に通常通り
    そのカテゴリーに属したすべての記事をループもさせています。

    ネット等で調べたのですがどうしても見つからず
    ご教授いただけたら大変嬉しいです。よろしくお願いいたします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • 水野史土

    (@ounziw)

    WP_Queryだったら、下記ページに詳細な説明があります。

    https://wpdocs.osdn.jp/関数リファレンス/WP_Query

    トピック投稿者 minoya

    (@minoya)

    Ounziwさん

    お返事ありがとうございます。
    これのどれを使えば出来るのでしょうか…?

    ioxrxogi

    (@ioxrxogi)

    $args = array(

    こちらに、カテゴリー表示用に
    cat => ‘カテゴリーID’, あるいは
    category_name => ‘スラッグ’,

    それと、ランダムに表示するために、
    orderby => ‘rand’,

    を付け加えればいけるのではないでしょうか。

    カテゴリーアーカイブのメインループで実現するなら、アクションフック pre_get_posts アクションを使ったほうが良いと思いました。

    // functions.php
    add_action( 'pre_get_posts', function( $query ) {
        if ( $query->is_main_query() && $query->is_category( 'aaa' ) ) { // aaa はカテゴリースラッグ、あるいはカテゴリーID
            $query->set( 'meta_key', 'pickup' );
            $query->set( 'meta_value, '1' );
            $query->set( 'orderby', 'rand' );
        }
    }

    https://wpdocs.osdn.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API/%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%83%83%E3%82%AF%E4%B8%80%E8%A6%A7/pre_get_posts

    すみません… ちゃんと関数が閉じられていませんね。

    // functions.php
    add_action( 'pre_get_posts', function( $query ) {
        if ( $query->is_main_query() && $query->is_category( 'aaa' ) ) { // aaa はカテゴリースラッグ、あるいはカテゴリーID
            $query->set( 'meta_key', 'pickup' );
            $query->set( 'meta_value, '1' );
            $query->set( 'orderby', 'rand' );
        }
    } ); // ← 修正
5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「カテゴリ内で特定のカスタムフィールドを持つ記事を表示」には新たに返信することはできません。