-
投稿者投稿
-
2019年8月16日 3:25 PM #25271
【お使いの Snow Monkey のバージョン】v7.9.x
【お使いのブラウザ】Safari
【当該サイトのURL】(公開できる場合は書いていただいたほうがスムーズです)===
snow_monkey_template_part_render
などのフックで投稿一覧のli
要素などのカスタマイズを行っていますが、
Snow Monkey Blocksの最近の投稿などではrich-media
を選んだりした場合でも各li
要素にそのカスタマイズは反映されません。反映させるのはどうすれば良いかと思っているのですが、
snow_monkey_template_part_render
などのフックでカスタマイズした結果が反映されるようには出来ないでしょうか?♥ 0いいねをした人: 居ません2019年8月17日 12:30 PM #25337最近の投稿ブロックは、最近の投稿ウィジェットとの互換性などの歴史的経緯から、
apply_filters( 'inc2734_wp_awesome_widgets_render_widget', $widget, $args, $instance );
というフィルターフックでカスタマイズできるようになっています。その後にパッチ的に
snow_monkey_template_part_render
を通すように改修できないこともないとは思うのですが、結局他のブロックもsnow_monkey_template_part_render
を通るわけではないので、ちょっと微妙かなと思います。♥ 0いいねをした人: 居ません2019年8月18日 11:08 AM #25421inc2734_
の方のフックでしたかー(汗)> 結局他のブロックも snow_monkey_template_part_render を通るわけではない
確かに…微妙と言うか色々面倒な事になりますね。了解です。
使いたい部分で
inc2734_wp_awesome_widgets_render_widget
で適度にカスタマイズをするか通すようにするとかの方が楽かもって感じに思えますし、ちょっとそれで試してみてカスタマイズで質問が出たらまた別トピックで聞きますー。♥ 0いいねをした人: 居ません2019年8月19日 10:39 AM #25550ちょっと確認したかったので再度トピックオープンしました。
その後にパッチ的に
snow_monkey_template_part_render
を通すように改修できないこともないとは思うのですが、結局他のブロックもsnow_monkey_template_part_render
を通るわけではない調べてみたらウィジェットでもrenderフックは通ってるようでした…。
ただ、通り方がちょっと特殊な感じで通ってるのでややこしかった…と。add_filter( 'snow_monkey_template_part_render', function ( $html, $slug, $name, $vars ) { if ( $slug === 'template-parts/loop/entry-summary' ) { if ( $vars['_entries_layout'] === 'rich-media' ) { ob_start(); <strong>ほにゃらら</strong> $html = ob_get_clean(); } } return $html; }, 10, 4 );
と書いて、最新の投稿ブロックを実行すると
$vars['_entries_layout']
が無いと言うNoticeが出た状態で処理されているっぽいです。
$vars
に渡されてないだけでrenderフックは通る結果になるので。ウィジェットを使わない場合は正しくvarsに代入されているので、ウィジェット時に渡されないのを注意すると言うのがちょっと使い方として…な所もあるので、もうちょいとこちらでも考えてみようかと思います。(そもそも使い方が悪い気もしてる)
一応、報告まで。♥ 0いいねをした人: 居ません2019年8月19日 10:43 AM #25553調べてみたらウィジェットでもrenderフックは通ってるようでした…。
あ、「
li
をカスタマイズ」と書いていたのでスルーしましたが、li
の中の.c-entry-summary
コンポーネントはHelper::get_template_part()
で呼ばれているのでフック通ります。最新の投稿ブロックを実行すると$vars[‘_entries_layout’]が無いと言うNoticeが出た状態で処理されているっぽいです。
あーこれはバグかも…です。
♥ 0いいねをした人: 居ません2019年8月19日 12:32 PM #25576> あ、「li をカスタマイズ」と書いていたのでスルーしましたが、li の中の .c-entry-summary コンポーネントは Helper::get_template_part() で呼ばれているのでフック通ります。
あ、なるほど。
> あーこれはバグかも…です。
一応調査っすね。再現などで解らない事あれば聞いてください。
widgets/snow-monkey-posts.php
のHelper::get_template_part
では正しく指定されている(値も正常っぽい)のに
その後のsnow_monkey_template_part_render
だと、$vars['_excerpt_length'] = NULL
のみになってしまうっぽいって感じです。♥ 0いいねをした人: 居ません2019年8月19日 2:28 PM #25586わかりました、ここですね。
パラメーターを引き回すのに
$wp_query
を使ってて、もともと$wp_query
が持っているパラメーターを上書きしてしまわないように上記の条件判定をしてたんですけど、entry-summary
の_excerpt_length
はその上位のrecent-posts
も持っているのでnull
にならずに意図した判定がされなかった、という感じですね。これどうしたら良いんだ…。♥ 0いいねをした人: 居ません2019年8月19日 2:31 PM #25587あー
if ( null === $this->wp_query->get( $key, null ) ) { $this->vars[ $key ] = $value; $this->wp_query->set( $key, $value ); }
じゃなくて
if ( null === $this->wp_query->get( $key, null ) ) { $this->wp_query->set( $key, $value ); } $this->vars[ $key ] = $value;
だといいんですかね。
♥ 0いいねをした人: 居ません2019年9月7日 10:51 PM #27217これ修正されていたんですね(汗)
確認した所、問題のあったパターンでも全然上手くいくようになったので問題は解決したと思います。
クローズします。有難うございました。♥ 0いいねをした人: 居ません -
投稿者投稿
- トピック「Snow Monkey Blocksのカスタマイズに関して」には新しい返信をつけることはできません。