-
投稿者投稿
-
2021年2月7日 11:47 AM #67285
【お使いの Snow Monkey のバージョン】12.2.2
【お使いの Snow Monkey Blocks のバージョン】
【お使いの Snow Monkey Editor のバージョン】
【お使いのブラウザ】Chrom
【当該サイトのURL】### 実現したいこと
投稿や固定ページに
カスタムフィールドの登録した内容にヘッダーとフッダーを付けたい
### 発生している問題
カスタムフィールドの登録した内容は表示はされたが、
Snow Monkey のコンテンツと重複して表示される
### 試したこと
My Snow monkeyに single.phpを作成
ラップ関数でヘッダーとフッダーを呼び出した
♥ 0いいねをした人: 居ません2021年2月7日 11:55 AM #67286ちょっとどのようにしたいのかがよく想像できないので、デザインがわかるような画像(手書きのワイヤーフレームでもかまいません)を貼り付けてもらえますか?
♥ 0いいねをした人: 居ません2021年2月7日 2:44 PM #67294大変失礼しました。
まだ、Snow Monkeyを導入して3日ぐらいなので、自分でも理解ができてません。
質問の仕方がうまくできなくて申し訳ございませんでした。
今回は不動産会社のようなLPを制作する予定です。
そこでカスタムフィールドを使ってお客様が入力できるように考えてます。
投稿で試すために、My Snow Monkey のプラグインにsingle.php を作成してソースコードを書きました。
ヘッダ、フッターと登録した数値は確認できたのですが、
結果は重複したものが出てしまいます。
Contoroller:: について調べたのですが、MVCモデルのコントローラのかな?っていう程度で、
理解するところまで調べることができませんでした。
重複しないようにするにはどうするばいいのでしょうか?
よろしくお願いします。
♥ 0いいねをした人: 居ません2021年2月7日 3:13 PM #67296想定しているデザインを貼るのを忘れました。
こちらになります。
♥ 0いいねをした人: 居ません2021年2月8日 10:29 AM #67343共有されたコードだけ見た感じだと
Controller::layout
の前に、独自のカスタムフィールドを展開をして表示するコードを書いているのでそれが原因ではないかと。
展開されたカスタムフィールドの表示後に、Snow Monkeyの記述があるので、それで本来のコンテンツが表示され、重複となっていると思います。なので Snow Monkey 本来の記述を消せば重複しなくなる…のですが、書き方として
single.php
自体を上書きをする形なので子テーマ同様に影響力の強いカスタマイズとなっている為にメンテが困難にな形と思います。コンテンツを変更やカスタムフィールド参照をして表示するなら
フック
add_filter( 'the_content', ... )
を用いてコンテンツ部に対して書き換えるか、コンテンツを表示する為に用意されているテンプレートに関連するSnow Monkeyテーマ用のフックを掛けてコンテンツ部分を上書きするだけに留める方が良いと考えられます。♥ 1いいねをした人: 居ません2021年2月8日 11:34 AM #67357澤登忍さん
重複して表示される原因は Kmical Lights さんが書かれているとおりです。
Snow Monkey はテンプレートを小分けにしているので、single.php
のような大枠から上書きしなくても、コンテンツの表示部分だけを上書きすることができます。方法としては下記の2つが良いと思います。1. コンテンツ部分のテンプレートを上書きする
My Snow Monkey の中に
single.php
ではなく、コンテンツ部分を表示するためのテンプレートtemplate-parts/content/entry/content/content-post.php
だけをつくって下記のコードを記述する。<?php 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' ); ?> <?php the_content(): // ここにカスタムフィールを表示するためのコードを記述 ?> <?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' ); ?>
メリットはコンテンツ部分のマークアップを自由自在に定義できることです。デメリットとしては Snow Monkey がアップデートしてフックの名前が変わったり HTML の構造が変わったときに、このテンプレートにも反映しないと崩れが発生してしまう可能性があります。
2. アクションフックを使う
コンテンツ部分の内側で、かつ本文の前の部分で実行されるアクションフックを使う方法です。
add_action( 'snow_monkey_prepend_entry_content', function() { // 投稿タイプが post で詳細ページを表示しているときだけ実行 if ( is_single() && 'post' === get_post_type() ) { // ここにカスタムフィールを表示するためのコードを記述 } } );
本文の後ろだと下記になります。
add_action( 'snow_monkey_append_entry_content', function() { // 投稿タイプが post で詳細ページを表示しているときだけ実行 if ( is_single() && 'post' === get_post_type() ) { // ここにカスタムフィールを表示するためのコードを記述 } } );
♥ 0いいねをした人: 居ません2021年2月8日 6:03 PM #67388Kmical Lights様
ありがとうございます!
まだまだ知識が足りなく勉強が必要ですね。
Snow Monkey 本来の記述を消せば重複しなくなる…
Kmical Lights様のおっしゃる通り、その時にやってみたのですが、
全てのヘッダーとフッだーが消えてしまう現象でした。
もう少し勉強してから挑戦したいと思います。
テンプレをいじらないでフックでいじれるように頑張ります。
ありがとうございました。
♥ 0いいねをした人: 居ません2021年2月8日 6:14 PM #67389キタジマ タカシ様
ありがとうございます!
すごく丁寧に書いていただき本当に嬉しいです!
3日調べ続けたのですが、答えまで行かなくて本当に凹んでました。
もう一度しっかり、勉強して理解してから挑戦してみます。
5日以内に解決しますので、それまではどうぞよろしくお願いします。
♥ 0いいねをした人: 居ません2021年2月8日 6:57 PM #67393キタジマ タカシ様 Kmical Lights様
アクションフックを使うことでうまくいきました!
本当にありがとうございます!!
今後も、もっと勉強して使いこなせるように頑張って
多くの人にSnow Monkeyの良さを伝えていきたいです!
クローズとさせていただきます!
♥ 1いいねをした人: 居ません -
投稿者投稿
- トピック「カスタムフィールドの登録した内容にヘッダーとフッダーを付けたい」には新しい返信をつけることはできません。