- このトピックには8件の返信、2人の参加者があり、最後にKmical Lightsにより4年、 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 ); }
♥ 0いいねをした人: 居ません2020年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
でゴリゴリ処理されないようにする必要もあるかもしれない(要検証♥ 0いいねをした人: 居ません2020年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" }
と表示されてちゃんと動作しているように見えますが、そういうことではなく?
♥ 0いいねをした人: 居ません2020年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 ); }
♥ 0いいねをした人: 居ません2020年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
の優先度を前後させても何も影響を与えられないのと同じです。だから僕が書いた先のサンプルも優先度を与えている意味はないってことですね。♥ 0いいねをした人: 居ません2020年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
にフックする感じですかね。♥ 0いいねをした人: 居ません2020年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
を読まなければ不正解じゃないかなーと思ってるんです。♥ 0いいねをした人: 居ません2020年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; } );
♥ 0いいねをした人: 居ません2020年9月29日 5:00 PM #58055フックの効力があるのはあくまでこのメソッドを呼ぶときだけ
なるほど…。参照の実態化とか云々を意識してたので、その辺の解釈がそもそも違ってました。
…これは、ややこしい。
優先度に対して与え方を調整しないと駄目なのと、その辺りのフックも範囲参照する形がベターっぽいですね。とりあえず、仕様的に問題ないという事で、クローズします。
♥ 1いいねをした人: 居ません -
投稿者投稿
- トピック「snow_monkey_template_part_root_hierarchy_が動作していない」には新しい返信をつけることはできません。