-
投稿者投稿
-
2021年11月30日 9:17 PM #92912
【お使いの Snow Monkey のバージョン】15.16.0
【お使いの Snow Monkey Blocks のバージョン】13.4.0
【お使いの Snow Monkey Editor のバージョン】6.2.1
【お使いのブラウザ】Chrome 96.0.4664.45(Official Build)
【当該サイトのURL】構築中### 実現したいこと
・特定のカスタム投稿のアーカイブページで記事一覧をランダム表示したい
・特定のカスタム投稿のアーカイブページで1ページあたりに表示する投稿数を変更したい### 発生している問題
特になし
### 試したこと
フォーラムでの検索♥ 0いいねをした人: 居ません2021年11月30日 10:28 PM #92917こんばんは。
上記のトピックにをヒントに、先日、
pre_get_posts
を使って、カスタム投稿タイプのアーカイブをランダム表示させました。
これに別のカスタム投稿タイプのアーカイブの表示数を変更できるようにアレンジを加えたのが以下です。my-snow-monkey.php
もしくは、子テーマのfunctions.php
に記述してください。add_action( 'pre_get_posts', function( $query ) { if ( is_admin() || ! $query->is_main_query() ){ return; } // カスタム投稿タイプ「pt_a」のアーカイブのみ if ( is_post_type_archive('cpt_a') ) { $query->set( 'orderby', 'rand' ); // 表示順:ランダム } // カスタム投稿タイプ「pt_b」のアーカイブのみ if ( is_post_type_archive('cpt_b') ) { $query->set( 'posts_per_page', '6' ); // 表示数:6 } }, 1 );
これで実現できると思いますが、まずはローカル環境などでお試しくださいませ。
2021年12月1日 9:06 AM #92927GONSYさま
早速のご回答ありがとうございます!
なるほど、、、
pre_get_postsでis_post_type_archive指定ですね。
テストしてまた報告いたします。♥ 0いいねをした人: 居ません2021年12月1日 10:02 AM #92938お教えいただいた内容で実現できました!
追加でランダム表示の場合ページ遷移時にランダムで表示しなおしてしまうため、ページネーションにセッションを追加し制御しています。
いずれも、my-snow-monkey.php
もしくは、子テーマのfunctions.php
に記述しています。■ご教示頂いたコード
add_action( 'pre_get_posts', function( $query ) { if ( is_admin() || ! $query->is_main_query() ){ return; } // カスタム投稿タイプ「pt_a」のアーカイブのみ if ( is_post_type_archive('cpt_a') ) { $query->set( 'orderby', 'rand' ); // 表示順:ランダム } // カスタム投稿タイプ「pt_b」のアーカイブのみ if ( is_post_type_archive('cpt_b') ) { $query->set( 'posts_per_page', '6' ); // 表示数:6 } }, 1 );
■追加したコード
※書き込み時にエラーが発生してしまうため、一部全角で記載しております。add_filter('posts_orderby', 'edit_posts_orderby', 10, 2); function edit_posts_orderby($orderby_statement) { // セッションが開始されていなければここで開始 if( session_status() !== PHP_SESSION_ACTIVE ) { session_start(); } $pgn = $_SESSION['pgn']; if (empty($pgn)) { $pgn = rand(); $_SESSION['pgn'] = $pgn; } $orderby_statement = 'RAND('.$pgn.')'; return $orderby_statement; }
解決いたしましたので、トピックを閉じさせていただきます。
-
投稿者投稿
- トピック「特定のカスタム投稿のアーカイブページで記事一覧をランダム表示したい」には新しい返信をつけることはできません。