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

8件の投稿を表示中 - 1 - 8件目 (全8件中)
  • 投稿者
    投稿
  • #59723
    Paya
    参加者
    11

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

    【お使いの 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
    キタジマ タカシ
    キーマスター
    392

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

    – 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
    参加者
    11

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

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

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

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

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

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

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

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

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

    1
    #60041
    キタジマ タカシ
    キーマスター
    392
    #60077
    Paya
    参加者
    11

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

    ただ、なぜか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
    キタジマ タカシ
    キーマスター
    392

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

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

    0
    #60123
    Paya
    参加者
    11

    ご指摘の通り、ビューテンプレートの設定でした!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
    キタジマ タカシ
    キーマスター
    392

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

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