-
投稿者投稿
-
2020年10月27日 2:23 AM #59723
トピックを新しく立てる方は次の項目も記述してください(要望トピックの場合は不要です)。
【お使いの 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いいねをした人: 居ません2020年10月28日 9:10 AM #59800えっと、まずちょっとポイントを箇条書します。
– 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.php
やsnow-monkey/templates/view/content-post.php
はここから更にsnow-monkey/template-parts/content/entry/entry.php
を読む形にしていますが、これは共通化を図るためにやっているだけなので、特にこれに沿う必要はありません。もし
snow-monkey/templates/view/content.php
やsnow-monkey/templates/view/content-post.php
とほぼ同じ見た目で、部分的にカスタムフィールドを表示したいということであれば、templates/view/content-carstock.php
をつくらずにフックで対応するほうがコードの記述量は減らせると思います。具体的な要件を書き込みいただければ、もう少し最適な方法をご提示できるかもしれません。
♥ 1いいねをした人: 居ません2020年10月31日 12:52 PM #60037お世話になっております。
検証が遅くなりすみませんでした。やりたいこととしましては下記の通りです。
・カスタム投稿(carstock)の詳細ページのカスタマイズ
・通常の固定ページや投稿ページのデザインで「ページヘッダー」を設定していますが、このカスタム投稿ページでも同様にページヘッダーを設定したい。
・サイドバーは不要
・タイトルと本文の表示不要(つまりカスタムフィールドの情報だけを出力させたページを作りたい)
・表組みの中でカスタムフィールドの値を出力させたり、カスタムフィールド(画像)とslickとを組み合わせてギャラリーにしたりするため、コードをゴリゴリ書きたい。以上な感じで、ページヘッダーなどの全体的なレイアウトはそのままに、パンくずリストよりも下に表示される内容をごっそり変える必要があるといった感じです。
なので、外枠のレイアウトは変わらないとはいえ、中身はごっそり変わるのでcontent-carstock.phpを作った方がいいのではと思い、今回そのように進めております。
そしてご教示いただきました通り、
override/templates/view/content-carstock.php
を作成して、ここに表示したい内容を記入していきます。を試したところ、そこで自分の表示させたい内容を自由に書いて表示させられることが分かりました。
ありがとうございました。あとは、ページヘッダーが表示されていない状態なので、それを表示できればと思っていますが、ページヘッダーはどうすれば表示できますでしょうか?
よろしくお願いいたします。
♥ 1いいねをした人: 居ません2020年10月31日 1:00 PM #60041ページヘッダーはカスタマイザーから設定できます!
♥ 0いいねをした人: 居ません2020年10月31日 5:12 PM #60077ページヘッダーは表示できました!ありがとうございました!
ただ、なぜか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' ); ?> <?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いいねをした人: 居ません2020年11月1日 10:50 AM #60099先のカスタマイザーの設定で、ビューテンプレートの設定を「投稿のビューテンプレート」にされていないでしょうか? ビューテンプレートは
templates/views/
の中のテンプレートのことで、「投稿のビューテンプレート」にするとtemplates/view/content-post.php
が使用されるようになります。デフォルトだとその投稿タイプに応じたビューテンプレート、今回の場合だとtemplates/view/content-carstock.php
が使用されます。ビューテンプレートはデフォルト、アイキャッチ画像の位置を「ページヘッダー」とするとどうでしょうか?
♥ 0いいねをした人: 居ません2020年11月1日 11:09 PM #60123ご指摘の通り、ビューテンプレートの設定でした!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いいねをした人: 居ません2020年11月2日 9:16 AM #60168あ、ほんとですね、ご指摘ありがとうございます。書き換えました!
♥ 1いいねをした人: 居ません -
投稿者投稿
- トピック「特定のカスタム投稿用テンプレートファイルを作成したい」には新しい返信をつけることはできません。