特定のカスタム投稿用テンプレートファイルを作成したい

2
いいねをした人:
8件の投稿を表示中 - 1 - 8件目 (全8件中)
  • 投稿者
    投稿
  • #59723
    Paya
    閲覧者
    14

    トピックを新しく立てる方は次の項目も記述してください(要望トピックの場合は不要です)。

    【お使いの Snow Monkey のバージョン】v11.6.1
    【お使いのブラウザ】Chrome
    【当該サイトのURL】(クライアントサイトのため非公開)

    ===

    【実現したいこと】

    カスタム投稿でカスタムフィールド(ACF)を出力させるテンプレートを作りたいです。
    ・override内にどんなテンプレートを入れる必要があるか
    ・どのテンプレートにどんな記述が必要か
    ・最終ACFの出力タグを書いていくのはどのファイルになるか?

    このあたりをご教示いただけますと幸いです。

    【前提】

    子テーマを作らず、My Snow Monkeyでカスタマイズしています。

    【試したこと】

    ①overrideフォルダの作成と有効化

    上記ページ参考に、functions.php に、 plugins > my-snow-monkey > override フォルダ内のテンプレートが上書きされるよう記述。

    add_filter(
    	'snow_monkey_template_part_root_hierarchy',
    	function( $hierarchy ) {
    		$hierarchy[] = untrailingslashit( __DIR__ ) . '/override';
    		return $hierarchy;
    	}
    );

    ②カスタム投稿「carstock」専用のテンプレート single-carstock.php を作成

    themes/snow-monkey/singular.php を複製し、それを
    plugins/my-snow-monkey/override に、single-carstock.php に改名しアップロード。

    (現状、このテンプレートが適用されたところまでうまくいっています。)

    ③カスタム投稿「carstock」では content-carstock.php (④で作成)のビューテンプレートが適用されるようにする。(これ以降がうまくいっていない)

    single-carstock.php のビューテンプレート(コンテンツ部分のテンプレート)に当たる themes/snow-monkey/templates/view/content.php を複製し、上書き用に content-carstock.php に改名し override 内にアップロード。

    中身を書き換える(if文でテンプレートの適用を条件分岐させていますが、ここの記述が自信ないです)

    <?php
    if (get_post_type() == 'carstock') {
    	Helper::get_template_part( '../plugins/my-snow-monkey/override/content-carstock', $args['_post_type'] );
    } else {
    	Helper::get_template_part( 'template-parts/content/entry/content/content', $args['_post_type'] );
    }
    ?>

    override フォルダに content-carstock.php を作成

    themes/snow-monkey/template-parts/content/entry/content/content.php を複製し、override内にカスタム投稿「carstock」用にcontent-carstock.php に改名し、アップロード。

    以上を経て、content-carstock.php が適用されずに困っている状況です。

    つきましては、カスタム投稿「carstock」用のテンプレートの作成方法についてご教示のほど、何卒よろしくお願いいたします。

    ・override内にどんなテンプレートを入れる必要があるか
    ・どのテンプレートにどんな記述が必要か
    ・最終ACFの出力タグを書いていくのはどのファイルになるか?

    このあたりをご教示いただけますと幸いです。

    0
    いいねをした人: 居ません
    #59800
    アバター画像キタジマ タカシ
    参加者
    2422

    えっと、まずちょっとポイントを箇条書します。

    – override ディレクトリを使えるようにした = これは子テーマと(ほぼ)同じ状態になる。
    – carstock のページレイアウトが singular.php と同じ(例えば carstock も singular も右サイドバーあり)であれば、single-carstock.php は作成しなくても OK。別々にしたい場合だけ作成が必要。

    を踏まえた上で、carstock は singular とは別のレイアウトにしたいという前提で書いてみます。

    まず、override/single-carstock.php を作成してください。そしてそれに下記のコードを記述してください。

    <?php
    use Framework\Controller\Controller;
    
    Controller::layout( 'right-sidebar' ); // ← 適用したいレイアウトを記述
    Controller::render( 'content', 'carstock' );

    これはレイアウトに right-sidebar (右サイドバー)を使用、ビューに templates/view/content-carstock.php を使用する、ということになります。

    ということで、override/templates/view/content-carstock.php を作成して、ここに表示したい内容を記入していきます。snow-monkey/templates/view/content.phpsnow-monkey/templates/view/content-post.php はここから更に snow-monkey/template-parts/content/entry/entry.php を読む形にしていますが、これは共通化を図るためにやっているだけなので、特にこれに沿う必要はありません。

    もし snow-monkey/templates/view/content.phpsnow-monkey/templates/view/content-post.php とほぼ同じ見た目で、部分的にカスタムフィールドを表示したいということであれば、templates/view/content-carstock.php をつくらずにフックで対応するほうがコードの記述量は減らせると思います。

    具体的な要件を書き込みいただければ、もう少し最適な方法をご提示できるかもしれません。

    1
    いいねをした人: 居ません
    #60037
    Paya
    閲覧者
    14

    お世話になっております。
    検証が遅くなりすみませんでした。

    やりたいこととしましては下記の通りです。
    ・カスタム投稿(carstock)の詳細ページのカスタマイズ
    ・通常の固定ページや投稿ページのデザインで「ページヘッダー」を設定していますが、このカスタム投稿ページでも同様にページヘッダーを設定したい。
    ・サイドバーは不要
    ・タイトルと本文の表示不要(つまりカスタムフィールドの情報だけを出力させたページを作りたい)
    ・表組みの中でカスタムフィールドの値を出力させたり、カスタムフィールド(画像)とslickとを組み合わせてギャラリーにしたりするため、コードをゴリゴリ書きたい。

    以上な感じで、ページヘッダーなどの全体的なレイアウトはそのままに、パンくずリストよりも下に表示される内容をごっそり変える必要があるといった感じです。

    なので、外枠のレイアウトは変わらないとはいえ、中身はごっそり変わるのでcontent-carstock.phpを作った方がいいのではと思い、今回そのように進めております。

    そしてご教示いただきました通り、

    override/templates/view/content-carstock.php を作成して、ここに表示したい内容を記入していきます。

    を試したところ、そこで自分の表示させたい内容を自由に書いて表示させられることが分かりました。
    ありがとうございました。

    あとは、ページヘッダーが表示されていない状態なので、それを表示できればと思っていますが、ページヘッダーはどうすれば表示できますでしょうか?

    よろしくお願いいたします。

    1
    いいねをした人: 居ません
    #60041
    アバター画像キタジマ タカシ
    参加者
    2422
    #60077
    Paya
    閲覧者
    14

    ページヘッダーは表示できました!ありがとうございました!

    ただ、なぜかcontent-carstock.phpが読み込まれなくなってしまいました。

    今は通常の投稿と同じようなタイトルと、本文が表示された状態となっています。(今回作ろうとしているページにはこのタイトルと本文は不要です。)

    content-carstock.phpには下記のコードを入力を書いています。

    <?php
    /**
     * @package snow-monkey
     * @author inc2734
     * @license GPL-2.0+
     * @version 10.8.0
     */
    
    use Framework\Helper;
    ?>
    
    <?php do_action( 'snow_monkey_before_entry_content' ); ?>
    
    <div class="c-entry__content p-entry-content">
    	<?php do_action( 'snow_monkey_prepend_entry_content' ); ?>
    	<h1><?php the_field( 'maker01' ); ?>&emsp;<?php the_field( 'carname01' ); ?></h1>
    	<?php Helper::get_template_part( 'template-parts/content/link-pages' ); ?>
    
    	<?php do_action( 'snow_monkey_append_entry_content' ); ?>
    </div>
    
    <?php do_action( 'snow_monkey_after_entry_content' ); ?>
    

    single-carstock.phpは下記のコードです。

    <?php
    /**
     * @package snow-monkey
     * @author inc2734
     * @license GPL-2.0+
     * @version 9.0.0
     */
    
    use Framework\Controller\Controller;
    
    Controller::layout( 'one-column' ); // ← 適用したいレイアウトを記述
    Controller::render( 'content', 'carstock' );

    こちら、どこを触ればcontent-carstock.phpが表示されるようになりますでしょうか?

    ディレクトリの位置関係は下記の通りです。

    wp-content/plugins/my-snow-monkey/
    ∟ my-snow-monkey.php
    ∟ override
      ∟ single-carstock.php
      ∟ templates
        ∟ view
          ∟ content-carstock.php
    ∟style.css

    なかなかうまくいかず申し訳ありません。
    どうぞよろしくお願いいたします。

    0
    いいねをした人: 居ません
    #60099
    アバター画像キタジマ タカシ
    参加者
    2422

    先のカスタマイザーの設定で、ビューテンプレートの設定を「投稿のビューテンプレート」にされていないでしょうか? ビューテンプレートは templates/views/ の中のテンプレートのことで、「投稿のビューテンプレート」にすると templates/view/content-post.php が使用されるようになります。デフォルトだとその投稿タイプに応じたビューテンプレート、今回の場合だと templates/view/content-carstock.php が使用されます。

    ビューテンプレートはデフォルト、アイキャッチ画像の位置を「ページヘッダー」とするとどうでしょうか?

    0
    いいねをした人: 居ません
    #60123
    Paya
    閲覧者
    14

    ご指摘の通り、ビューテンプレートの設定でした!m(__)m
    ページヘッダーを設定時に、固定ページのビューテンプレートに変えてしまっていました。
    ありがとうございました。

    あと最後に念の為ご報告ですが、
    以前いただきました「override/single-carstock.php」内に記述する内容で、下記をご教示くださいましたが、最後のcarstockのところは’carstock’とシングルクオーテーションにしないとエラーになりました。
    僕の場合エディターがエラー箇所を示してくれたので、すぐ対応できましたが、他の方が参考にされる際、同じようにエラーが起こるかもと思い、念の為ご報告まで。

    <?php
    use Framework\Controller\Controller;
    
    Controller::layout( 'right-sidebar' ); // ← 適用したいレイアウトを記述
    Controller::render( 'content', carstock );

    <?php
    use Framework\Controller\Controller;
    
    Controller::layout( 'right-sidebar' ); // ← 適用したいレイアウトを記述
    Controller::render( 'content', 'carstock' );

    いつも本当にありがとうございます!m(__)m

    1
    いいねをした人: 居ません
    #60168
    アバター画像キタジマ タカシ
    参加者
    2422

    あ、ほんとですね、ご指摘ありがとうございます。書き換えました!

    1
    いいねをした人: 居ません
8件の投稿を表示中 - 1 - 8件目 (全8件中)
  • トピック「特定のカスタム投稿用テンプレートファイルを作成したい」には新しい返信をつけることはできません。

ドキュメント

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

ドキュメント

フォーラム

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

サポートフォーラム

よくあるご質問

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

よくあるご質問

お問い合わせ

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

お問い合わせ

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