snow_monkey_template_part_root_hierarchy_が動作していない

0
いいねをした人: 居ません
9件の投稿を表示中 - 1 - 9件目 (全9件中)
  • 投稿者
    投稿
  • #58034
    Kmical Lights
    閲覧者
    234

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

    【お使いの Snow Monkey のバージョン】v11.5.0b
    【お使いのブラウザ】Safari
    【当該サイトのURL】(公開できる場合は書いていただいたほうがスムーズです)

    ===

    add_action( 'plugins_loaded', '_plugins_loaded' );
    
    function _plugins_loaded() {
    
    add_filter(
    	'snow_monkey_template_part_root_hierarchy_template-parts/common/breadcrumbs',
    	function( $hierarchy, $name, $vars ) {
    		// 優先度を上げようが下げようが通らないような気がする
    		return $hierarchy;
    	},
    	100,	
    	3
    );
    
    }
    0
    いいねをした人: 居ません
    #58037
    Kmical Lights
    閲覧者
    234

    ちょっとフックを通るように修正した程度では、テンプレートの存在やフックの使い方によってはこれがゴリゴリ処理されるままな動きをする。

    add_filter(
    	'snow_monkey_template_part_root_hierarchy',
    	function( $hierarchy, $slug, $name, $vars ) {
    		$hierarchy[] = __DIR__ . '/template_root';
    		return $hierarchy;
    	},
    	1,  // または1000とか大きな数値
    	4
    );

    snow_monkey_template_part_root_hierarchy_ で返却があった場合、snow_monkey_template_part_root_hierarchy でゴリゴリ処理されないようにする必要もあるかもしれない(要検証

    0
    いいねをした人: 居ません
    #58038
    アバター画像キタジマ タカシ
    参加者
    2421
    add_filter(
    	'snow_monkey_template_part_root_hierarchy_template-parts/common/breadcrumbs',
    	function( $hierarchy, $name, $vars ) {
    		$hierarchy[] = 'hoge';
    		return $hierarchy;
    	},
    	100,
    	3
    );
    
    add_filter(
    	'snow_monkey_template_part_root_hierarchy',
    	function( $hierarchy, $slug ) {
    		if ( 'template-parts/common/breadcrumbs' === $slug ) {
    			var_dump( $hierarchy );
    		}
    		return $hierarchy;
    	},
    	101,
    	2
    );
    

    とすると

    array(1) { [0]=> string(4) "hoge" }
    

    と表示されてちゃんと動作しているように見えますが、そういうことではなく?

    0
    いいねをした人: 居ません
    #58043
    Kmical Lights
    閲覧者
    234

    うーん…よく調べると、フック自体は動作してるっぽいです。
    何かディレクトリを正しく読みに行けてないのか動作が不明な時が多い。

    これだとどうだろう?

    ・template_breadcrumbsディレクトリ
    sample.php
    breadcrumbs_template.php

    ・template_rootディレクトリ
    sample.php

    を用意する。

    add_action( 'plugins_loaded', '_plugins_loaded' );
    
    function _plugins_loaded() {
    
    	add_filter(
    		'snow_monkey_template_part_root_hierarchy',
    		function( $hierarchy, $slug, $name, $vars ) {
    			$hierarchy[] = __DIR__ . '/template_root';
    			return $hierarchy;
    		},
    		101,
    		4
    	);
    
    	add_filter(
    		'snow_monkey_template_part_root_hierarchy_template-parts/common/breadcrumbs',
    		function( $hierarchy, $name, $vars ) {
    			$hierarchy[] = __DIR__ . '/template_breadcrumbs';
    			return $hierarchy;
    		},
    		102,
    		3
    	);
    
    	// header で sample.php を読む( rootのsample.phpを展開。正しい )
    	// TODO: ヘッダー設定は中央ロゴ
    	add_filter(
    		'snow_monkey_template_part_render_template-parts/header/center', 
    		function( $html, $name, $vars ) {
    			$sample_html = \Framework\Helper::get_template_part( 'sample' );
    			$html = $sample_html . $html;
    			return $html;
    		},
    		10,
    		3
    	);
    
    	// header で breadcrumbs_sample を読む(この場合、読めないので Notice が出る。正しい)
    	// TODO: ヘッダー設定は中央ロゴ
    	add_filter(
    		'snow_monkey_template_part_render_template-parts/header/center', 
    		function( $html, $name, $vars ) {
    			return $html;
    		},
    		10,
    		3
    	);
    
    	// breadcrumbs で sample.php を読む
    	// TODO: 優先度が高かろうと低かろうと、template_breadcrumbs の方が読まれていない。 template_root/sample.php が読まれている(正しいのか?
    	add_filter(
    		'snow_monkey_template_part_render_template-parts/common/breadcrumbs', 
    		function( $html, $name, $vars ) {
    			$sample_html = \Framework\Helper::get_template_part( 'sample' );
    			$html = $sample_html . $html;
    			return $html;
    		},
    		10,
    		3
    	);
    
    	// breadcrumbs で breadcrumbs_sample.php を読む(読まれない)
    	// TODO: template_breadcrumbs が読まれない。エラーになる(正しい動きか?
    	add_filter(
    		'snow_monkey_template_part_render_template-parts/common/breadcrumbs',
    		function( $html, $name, $vars ) {
    			$sample_html = \Framework\Helper::get_template_part( 'breadcrumbs_template' );
    			$html = $sample_html . $html;
    			return $html;
    		},
    		10,
    		3
    	);
    
    }
    0
    いいねをした人: 居ません
    #58045
    アバター画像キタジマ タカシ
    参加者
    2421

    あ、そうか、snow_monkey_template_part_root_hierarchysnow_monkey_template_part_root_hierarchy_template-parts/common/breadcrumbs は別のフックなので、互いの優先度を前後させても影響は与えられないです。wp_headwp_footer の優先度を前後させても何も影響を与えられないのと同じです。だから僕が書いた先のサンプルも優先度を与えている意味はないってことですね。

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

    最後の

    // breadcrumbs で breadcrumbs_sample.php を読む(読まれない)
    // TODO: template_breadcrumbs が読まれない。エラーになる(正しい動きか?
    add_filter(
    	'snow_monkey_template_part_render_template-parts/common/breadcrumbs',
    	function( $html, $name, $vars ) {
    		$sample_html = \Framework\Helper::get_template_part( 'breadcrumbs_template' );
    		$html = $sample_html . $html;
    		return $html;
    	},
    	10,
    	3
    );

    については、snow_monkey_template_part_root_hierarchy_template-parts/common/breadcrumbs フックはあくまで Helper::get_template_part( 'template-parts/common/breadcrumbs' ); にしか効かないので仕様通りの動きとなります。これをやりたいなら snow_monkey_template_part_root_hierarchy_breadcrumbs_template にフックする感じですかね。

    0
    いいねをした人: 居ません
    #58049
    Kmical Lights
    閲覧者
    234

    あ、そうか、snow_monkey_template_part_root_hierarchy と snow_monkey_template_part_root_hierarchy_template-parts/common/breadcrumbs は別のフック

    あー…だからかー…。
    snow_monkey_template_part_root_hierarchy_xxxxsnow_monkey_template_part_root_hierarchy_yyyy でも順序は無関係と。。
    なので、snow_monkey_template_part_root_hierarchy_系は基本、順序の保証はされないとなる訳で、$hierarchy[$priority] = .... なりで優先度順に並べるしかないですな。

    ややこしすぎる(笑)

    最後の….

    ん…?snow_monkey_template_part_root_hierarchy_breadcrumbs_templateをフックしてもそもそもそのファイルが読まれる所は何処だ…(汗)

    多分、伝わってないので。

    Helper::get_template_part( 'template-parts/common/breadcrumbs' );
    でテーマのパンくずで、このフックが読まれてるじゃないですか。
    で、$sample_html = \Framework\Helper::get_template_part( 'breadcrumbs_template' );
    snow_monkey_template_part_root_hierarchy_template-parts/common/breadcrumbsフックで定義してるtemplate_breadcrumbsディレクトリのbreadcrumbs_template.phpを読もうとしてる訳です。

    でも、このフック、どれだけhierarchyのフックをどうこうしようと、template_rootディレクトリのファイルが読まれてるんですね。この状態でbreadcrumbs_template.phpは読まれないんです。
    多分、sample.phpを先に読む時か何かのタイミングで読むディレクトリ = template_rootディレクトリって認識してるのか他の問題があるんじゃないかと。

    snow_monkey_template_part_root_hierarchy系のフックってテンプレートが無ければ配列を順に読んでいく…なので、template_breadcrumbsディレクトリのbreadcrumbs_template.phpを読まなければ不正解じゃないかなーと思ってるんです。

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

    Helper::get_template_part( ‘template-parts/common/breadcrumbs’ );
    でテーマのパンくずで、このフックが読まれてるじゃないですか。

    そうです。フックの効力があるのはあくまでこのメソッドを呼ぶときだけです。その先の snow_monkey_template_part_root_hierarchy_template-parts/common/breadcrumbs には影響を与えません。

    template_breadcrumbs/breadcrumbs_template.php を読ませたいなら、こいつにフックさせないといけません。

    add_filter(
    	'snow_monkey_template_part_root_hierarchy_template_breadcrumbs/breadcrumbs_template',
    	function( $hierarchy ) {
    		〜
    		return $hierarchy;
    	}
    );
    0
    いいねをした人: 居ません
    #58055
    Kmical Lights
    閲覧者
    234

    フックの効力があるのはあくまでこのメソッドを呼ぶときだけ

    なるほど…。参照の実態化とか云々を意識してたので、その辺の解釈がそもそも違ってました。
    …これは、ややこしい。
    優先度に対して与え方を調整しないと駄目なのと、その辺りのフックも範囲参照する形がベターっぽいですね。

    とりあえず、仕様的に問題ないという事で、クローズします。

    1
    いいねをした人: 居ません
9件の投稿を表示中 - 1 - 9件目 (全9件中)
  • トピック「snow_monkey_template_part_root_hierarchy_が動作していない」には新しい返信をつけることはできません。

ドキュメント

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

ドキュメント

フォーラム

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

サポートフォーラム

よくあるご質問

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

よくあるご質問

お問い合わせ

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

お問い合わせ

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