サポート » 使い方全般 » 特定のカテゴリを除くランダム表示

  • 解決済 teco11141

    (@teco11141)


    現在、functions.php内に下記内容を記載して
    トップページに記事がランダムで表示されるようにしています。

    function home_random_posts( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
    $query->set( ‘orderby’, ‘rand’ );
    }
    }
    add_action( ‘pre_get_posts’, ‘home_random_posts’ );

    このランダム表示において、特定のカテゴリを除くことは可能でしょうか。
    例えばカテゴリがA,B,C,D,Eとあり、
    D,Eを除いたA,B,Cのカテゴリの記事だけをトップページにランダム表示したいのです。

    知識に乏しいため、上記コードに書き加える形で希望が叶えられるのならばと
    現在使用中のコードを記載しましたが、こちらを必ず使いたいという強いこだわりはありません。
    どうぞよろしくお願いします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • ishitaka

    (@ishitaka)

    こんにちは

    category__in パラメータでカテゴリー ID(配列)を指定することができます。

    function home_random_posts( $query ) {
    	if ( $query->is_home() && $query->is_main_query() ) {
    		$query->set( 'orderby', 'rand' );
    		$query->set( 'category__in', array( 1, 2, 3 ) ); // ←追加
    	}
    }
    add_action( 'pre_get_posts', 'home_random_posts' );

    スラッグで指定する場合は、

    $query->set( 'tax_query', array(
    	'relation' => 'AND',
    	array(
    		'taxonomy' => 'category',
    		'field' => 'slug',
    		'terms' => array( 'foo', 'bar', 'baz' ),
    		'operator' => 'IN',
    	)
    ) );

    ※ このフォーラムでコードを貼り付ける場合は、コードを選択し [code] ボタンをクリック(逆クォートで囲む)してください。
    詳細は、下記ページをご覧ください。
    https://wpdocs.osdn.jp/フォーラムへようこそ#.E3.82.B3.E3.83.BC.E3.83.89.E3.81.AE.E6.8A.95.E7.A8.BF

    ishitaka

    (@ishitaka)

    D,Eを除いたA,B,Cのカテゴリの記事だけをトップページにランダム表示したいのです。

    特定のカテゴリーを除く場合は、category__not_in パラメータです。
    operator パラメータの場合は、’NOT_IN’ です。

    DRILL LANCER

    (@rickaddison7634)

    場合によってはWP Queryのページも参考になると思います。

    トピック投稿者 teco11141

    (@teco11141)

    >ishitakaさん
    希望していた表示が叶いました。
    ありがとうございます。
    また、コードの記載についてご指摘ありがとうございます。
    以後気をつけます。

    >RICKさん
    ありがとうございます。
    参照いたします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「特定のカテゴリを除くランダム表示」には新たに返信することはできません。