テンプレートの任意の場所に別のテンプレートを挿入したい

0
いいねをした人: 居ません
  • このトピックには4件の返信、2人の参加者があり、最後にomochicoにより2年前に更新されました。
5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • 投稿者
    投稿
  • #114247
    omochico
    参加者
    2

    お世話になっております。

    テンプレートの任意の場所に別のテンプレートを挿入したいのですが、方法が分からず困っております。

    もし方法ご存知でしたらご教示いただけますと幸いです。

    【お使いの Snow Monkey のバージョン】18.1.1
    【お使いの Snow Monkey Blocks のバージョン】17.1.0
    【お使いの Snow Monkey Editor のバージョン】 9.0.3
    【お使いのブラウザ】 Google Chrome

    <やりたいこと>

    テンプレートの任意の場所に別のテンプレートを挿入したい

    具体的にはページタイトルの中にパンくずを表示したく、page-header.phpの任意の場所にテンプレート”breadcrumbs.php”を挿入したいです。

     

    <試したこと>

    ‘snow_monkey_template_part_render_template-parts/common/page-header’でフックしてその中でget_template_part(‘template-parts/common/breadcrumbs’)を呼び出すも、その場で展開されてしまい、ヘッダーの一番上にパンくずが表示されてしまいました。

    やってはならぬと思いつつもpage-header.php内のパンくずを表示したい場所に以下を挿入し、期待通りの結果は得られております。

    <?php //Helper::get_template_part( ‘template-parts/common/breadcrumbs’ ); ?>

     

    テンプレートの中身を書き換えずに同様の結果を得る方法ございますでしょうか?

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

    ‘snow_monkey_template_part_render_template-parts/common/page-header’でフックしてその中でget_template_part(‘template-parts/common/breadcrumbs’)を呼び出すも、その場で展開されてしまい、ヘッダーの一番上にパンくずが表示されてしまいました。

    実際に書いたコードと、具体的にどの部分に表示したいのかかがわかるスクショなどを共有してもらうことはできますか?

    0
    いいねをした人: 居ません
    #114267
    omochico
    参加者
    2

    キタジマさま

    ご返答いただきありがとうございます。

    最初からコードと希望のスクショを共有させていただくべきでしたね。
    大変失礼いたしました。

    コードは以下の通りとなります。

    add_filter(
    	'snow_monkey_template_part_render_template-parts/common/page-header',
    	function( $html ) {
    			$breadcrumbs = get_template_part( 'template-parts/common/breadcrumbs' );
    			return str_replace(
    				'</h1>',
    				'</h1>'. $breadcrumbs ,  
    				$html
    			);
    		return $html;
    	}
    );

    表示したい位置は以下の通りです。

    また、ページヘッダーのアイキャッチ画像の位置は『ページヘッダーの上にタイトルを表示』に設定しています。

    どうぞよろしくお願い申し上げます。

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

    get_template_part() は値を返す関数ではなく出力する関数なので、$breadcrumbs = get_template_part( 'template-parts/common/breadcrumbs' ); としても $breadcrumbs に値は格納されずその時点で画面に出力されてしまいます。なので、下記のようにするとどうでしょう?

    ob_start();
    get_template_part( 'template-parts/common/breadcrumbs' );
    $breadcrumbs = ob_get_clean();
    0
    いいねをした人: 居ません
    #114291
    omochico
    参加者
    2

    キタジマさま

    ご返答いただきありがとうございます。
    いただいたコードを入れてみたところ、希望通りの表示となりました!
    ob_startという関数を初めて知り、大変勉強になりました。

    かなりの期間悩んでいたので、スマートに解決したことに大変感動しております。
    フォーラムに相談させていただいて本当によかったです。

    ありがとうございました!
    トピック閉じさせていただきます。

    1
    いいねをした人:
5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • トピック「テンプレートの任意の場所に別のテンプレートを挿入したい」には新しい返信をつけることはできません。

ドキュメント

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

ドキュメント

フォーラム

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

サポートフォーラム

よくあるご質問

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

よくあるご質問

お問い合わせ

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

お問い合わせ

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