-
投稿者投稿
-
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などのフックでカスタマイズした結果が反映されるようには出来ないでしょうか?♥ 0Who liked: No user2019年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を通るわけではないので、ちょっと微妙かなと思います。♥ 0Who liked: No user2019年8月18日 11:08 AM #25421inc2734_の方のフックでしたかー(汗)> 結局他のブロックも snow_monkey_template_part_render を通るわけではない
確かに…微妙と言うか色々面倒な事になりますね。了解です。
使いたい部分で
inc2734_wp_awesome_widgets_render_widgetで適度にカスタマイズをするか通すようにするとかの方が楽かもって感じに思えますし、ちょっとそれで試してみてカスタマイズで質問が出たらまた別トピックで聞きますー。♥ 0Who liked: No user2019年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に代入されているので、ウィジェット時に渡されないのを注意すると言うのがちょっと使い方として…な所もあるので、もうちょいとこちらでも考えてみようかと思います。(そもそも使い方が悪い気もしてる)
一応、報告まで。♥ 0Who liked: No user2019年8月19日 10:43 AM #25553調べてみたらウィジェットでもrenderフックは通ってるようでした…。
あ、「
liをカスタマイズ」と書いていたのでスルーしましたが、liの中の.c-entry-summaryコンポーネントはHelper::get_template_part()で呼ばれているのでフック通ります。最新の投稿ブロックを実行すると$vars[‘_entries_layout’]が無いと言うNoticeが出た状態で処理されているっぽいです。
あーこれはバグかも…です。
♥ 0Who liked: No user2019年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のみになってしまうっぽいって感じです。♥ 0Who liked: No user2019年8月19日 2:28 PM #25586わかりました、ここですね。
パラメーターを引き回すのに
$wp_queryを使ってて、もともと$wp_queryが持っているパラメーターを上書きしてしまわないように上記の条件判定をしてたんですけど、entry-summaryの_excerpt_lengthはその上位のrecent-postsも持っているのでnullにならずに意図した判定がされなかった、という感じですね。これどうしたら良いんだ…。♥ 0Who liked: No user2019年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;だといいんですかね。
♥ 0Who liked: No user2019年9月7日 10:51 PM #27217これ修正されていたんですね(汗)
確認した所、問題のあったパターンでも全然上手くいくようになったので問題は解決したと思います。
クローズします。有難うございました。♥ 0Who liked: No user -
投稿者投稿
- トピック「Snow Monkey Blocksのカスタマイズに関して」には新しい返信をつけることはできません。
