coji

フォーラムへの返信

8件の投稿を表示中 - 1 - 8件目 (全8件中)
  • 投稿者
    投稿
  • アバター画像coji
    閲覧者
    7

    お教えいただいた内容で実現できました!

    追加でランダム表示の場合ページ遷移時にランダムで表示しなおしてしまうため、ページネーションにセッションを追加し制御しています。
    いずれも、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;
    
    }

    解決いたしましたので、トピックを閉じさせていただきます。

    2
    いいねをした人:
    アバター画像coji
    閲覧者
    7

    GONSYさま

     

    早速のご回答ありがとうございます!

    なるほど、、、
    pre_get_postsでis_post_type_archive指定ですね。
    テストしてまた報告いたします。

    0
    いいねをした人: 居ません
    アバター画像coji
    閲覧者
    7

    早速のご連絡ありがとうございます。
    ご案内頂いた内容で無事に直りました。

    1
    いいねをした人:
    アバター画像coji
    閲覧者
    7

    コンソール画面URL

    0
    いいねをした人: 居ません
    アバター画像coji
    閲覧者
    7

    キタジマ タカシ さま
    Olein_jp さま

    ご案内下さいました内容で無事に読み込みできました。

    私の方の勘違いのポイントとして

    use Framework\Helper; を宣言しておけば、my-snow-monkey.php上で
    get_template_part() はすべてsnow_monkey_template_part_root_hierarchyをフックしてくれると思い込んでおりました。
    get_template_part()\Framework\Helper::get_template_part()とすることで
    意図する動作になりました。

    ご対応ありがとうございました。

    3
    いいねをした人:
    アバター画像coji
    閲覧者
    7

    キタジマ タカシ さま

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

    フックを使うということは Snow Monkey のアップデートにより影響を受ける可能性もあります。テンプレートの追加や上書きをする場合は運用面を考えても子テーマのほうがシンプルだと個人的には思います。

    なるほど、、承知しました。子テーマで対応するようにします。

    具体例のページのご案内もありがとうございます。
    そちらも確認して試してはみたものの、実現できず、、、勉強のために再度チャレンジしてみます。

    本件、またご相談させて頂くかもしれませんので、もう少しトピックはオープンのままとさせてください。

    引き続き、よろしくお願い致します。

    1
    いいねをした人:
    アバター画像coji
    閲覧者
    7

    キタジマ タカシ さま

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

    snow_monkey_template_part_root_hierarchy

    を利用してできるかも と思いつつ試してみたのですが、うまくいかず、Snow Monkey本体にあるテンプレートパーツの置き換えに使うフックかと思い込んでおりました、、、オリジナルファイルも行けるのですね!

    構築の煩雑さは増しても、運用がシンプルにできればと思っておりまして極力、子テーマなしで構築したいと考えています。
    snow_monkey_template_part_root_hierarchy フィルターフックを利用して、
    my-snow-monkey.php上で
    plugins\my-snow-monkey\override\template-parts\original\foo.php
    get_template_part()から呼び出す具体的なコードをお教えいただけないでしょうか。
    ※ファイル冒頭に use Framework\Helper; は追加済みです。

    また、特定のディレクトリ内のテンプレートパーツ呼び出し時のみMy Snow Monkeyのここのディレクトリを使ってね という事ができれば負荷も少なくて済みそうなのですが、そのような手法がありましたら、併せてお教えいただけると助かります。
    ※これができなくても$slugでコツコツ追加していきます。

    0
    いいねをした人: 居ません
    アバター画像coji
    閲覧者
    7

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

    用途としましては、WP 5.5からget_template_partにパラメーターが渡せるようになったので
    ショートコードで動的にテンプレートパーツを読み込み、ブロックで構築 + 好きな場所にテンプレートパーツを挿入するためです。

    また、上書き用のディレクトリに配置しているのは、テンプレートパーツのファイルを同じ場所にまとめておきたいだけで、特に意味はありません。

    単純にインポートするだけであればrequreとかでいけませんでしょうか?

    こちら、詳しくお伺いできますでしょうか。

    また、本体アップデートでファイルが消失する旨も承知しております。
    ご指摘ありがとうございます。

    0
    いいねをした人: 居ません
8件の投稿を表示中 - 1 - 8件目 (全8件中)

ドキュメント

Snow Monkey の設定方法やマニュアルを掲載しています。

ドキュメント

フォーラム

Snow Monkey の使い方やカスタマイズについてのご質問・ご要望等はサポートフォーラムで行っています。サポートフォーラムは誰でも閲覧できますが、書き込みできるのは Snow Monkey 購入者のみとなります。

サポートフォーラム

よくあるご質問

Snow Monkey のサービスについて不明な点がある場合は、まずはよくあるご質問をご確認ください。

よくあるご質問

お問い合わせ

よくあるご質問を見ても解決しなかった場合、試用版の申請については問い合わせフォームからお願いいたします。

お問い合わせ

Snow Monkey は Gutenberg ブロックエディターに対応した 100%GPL の WordPress テーマです。拡張性を意識した開発をおこなっており、カスタマイザーとブロックでスピーディーにサイトを立ち上げるだけでなく、CSS やフックを駆使した高度なカスタマイズにも柔軟に対応できます。