- このトピックには8件の返信、2人の参加者があり、最後にKmical Lightsにより5年、 1ヶ月前に更新されました。 
- 
		投稿者投稿
- 
		
			
				
2020年9月29日 2:15 PM #58034トピックを新しく立てる方は次の項目も記述してください(要望トピックの場合は不要です)。 【お使いの 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 ); }♥ 0Who liked: No user2020年9月29日 2:23 PM #58037ちょっとフックを通るように修正した程度では、テンプレートの存在やフックの使い方によってはこれがゴリゴリ処理されるままな動きをする。 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でゴリゴリ処理されないようにする必要もあるかもしれない(要検証♥ 0Who liked: No user2020年9月29日 2:54 PM #58038add_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" }と表示されてちゃんと動作しているように見えますが、そういうことではなく? ♥ 0Who liked: No user2020年9月29日 3:21 PM #58043うーん…よく調べると、フック自体は動作してるっぽいです。 
 何かディレクトリを正しく読みに行けてないのか動作が不明な時が多い。これだとどうだろう? ・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 ); }♥ 0Who liked: No user2020年9月29日 3:43 PM #58045あ、そうか、 snow_monkey_template_part_root_hierarchyとsnow_monkey_template_part_root_hierarchy_template-parts/common/breadcrumbsは別のフックなので、互いの優先度を前後させても影響は与えられないです。wp_headとwp_footerの優先度を前後させても何も影響を与えられないのと同じです。だから僕が書いた先のサンプルも優先度を与えている意味はないってことですね。♥ 0Who liked: No user2020年9月29日 3:48 PM #58046最後の // 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にフックする感じですかね。♥ 0Who liked: No user2020年9月29日 4:06 PM #58049あ、そうか、snow_monkey_template_part_root_hierarchy と snow_monkey_template_part_root_hierarchy_template-parts/common/breadcrumbs は別のフック あー…だからかー…。 
 snow_monkey_template_part_root_hierarchy_xxxxとsnow_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を読まなければ不正解じゃないかなーと思ってるんです。♥ 0Who liked: No user2020年9月29日 4:30 PM #58052Helper::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; } );♥ 0Who liked: No user2020年9月29日 5:00 PM #58055フックの効力があるのはあくまでこのメソッドを呼ぶときだけ なるほど…。参照の実態化とか云々を意識してたので、その辺の解釈がそもそも違ってました。 
 …これは、ややこしい。
 優先度に対して与え方を調整しないと駄目なのと、その辺りのフックも範囲参照する形がベターっぽいですね。とりあえず、仕様的に問題ないという事で、クローズします。 ♥ 1Who liked: No user
- 
		投稿者投稿
- トピック「snow_monkey_template_part_root_hierarchy_が動作していない」には新しい返信をつけることはできません。

