フォーラムへの返信
-
投稿者投稿
-
僕もやったことがないのであっているかどうかはわかりませんが、同じコードで試してみた感じだと、URL の取得とトップページの判定はこれで動いているようです。ただ、リロードされているかどうかは僕の環境ではよくわかりませんでした。
♥ 0Who liked: No userこれに置き換えるとどうでしょうか!?
use Framework\Helper; $args = wp_parse_args( // phpcs:disable VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable $args, // phpcs:enable [ '_entries_layout' => 'rich-media', '_excerpt_length' => null, '_force_sm_1col' => false, '_infeed_ads' => false, '_item_thumbnail_size' => 'medium_large', '_item_title_tag' => 'h3', '_display_item_meta' => 'post' === $args['_name'] ? true : false, '_display_item_terms' => 'post' === $args['_name'] ? true : false, '_posts_query' => false, ] ); if ( ! $args['_posts_query'] ) { return; } $data_infeed_ads = $args['_infeed_ads'] ? 'true' : 'false'; $force_sm_1col = $args['_force_sm_1col'] ? 'true' : 'false'; ?> <ul class="c-entries c-entries--<?php echo esc_attr( $args['_entries_layout'] ); ?>" data-has-infeed-ads="<?php echo esc_attr( $data_infeed_ads ); ?>" data-force-sm-1col="<?php echo esc_attr( $force_sm_1col ); ?>" > <?php while ( $args['_posts_query']->have_posts() ) : ?> <?php $args['_posts_query']->the_post(); ?> <li class="c-entries__item"> <?php $_terms = []; if ( $args['_display_item_terms'] ) { $_terms = Helper::get_the_public_terms( get_the_ID() ); if ( $args['_posts_query']->is_tax() || $args['_posts_query']->is_category() || $args['_posts_query']->is_tag() ) { $_hierarchical_terms = array_filter( $_terms, function( $_term ) { return get_taxonomy( $_term->taxonomy )->hierarchical; } ); $tax_query = $args['_posts_query']->get( 'tax_query' ); $term = null; if ( ! empty( $tax_query[0]['terms'] ) && ! empty( $tax_query[0]['taxonomy'] ) ) { $terms = (array) $tax_query[0]['terms']; $term = get_term( $terms[0], $tax_query[0]['taxonomy'] ); } else { $term = $args['_posts_query']->get_queried_object(); } $is_term = ! is_wp_error( $term ) && ! is_null( $term ); if ( $is_term ) { // If there is a taxonomy specification, use it. // However, if the taxonomy does not have a hierarchy, use the taxonomy with a hierarchy. if ( get_taxonomy( $term->taxonomy )->hierarchical ) { $_terms = [ $term ]; } else { foreach ( $_hierarchical_terms as $_term ) { if ( $term->term_taxonomy_id === $_term->term_taxonomy_id ) { $_terms = [ $term ]; break; } } } } } } Helper::get_template_part( 'template-parts/loop/entry-summary', $args['_name'], [ '_context' => $args['_context'], '_entries_layout' => $args['_entries_layout'], '_excerpt_length' => $args['_excerpt_length'], '_thumbnail_size' => $args['_item_thumbnail_size'], '_terms' => $_terms ? [ $_terms[0] ] : [], '_title_tag' => $args['_item_title_tag'], '_display_meta' => $args['_display_item_meta'], ] ); ?> </li> <?php endwhile; ?> <?php wp_reset_postdata(); ?> </ul>
♥ 0Who liked: No userそうなんです、5.9 からブロック追加ボタンの仕様が変わっていて、こちら側では調整しにくくなってるんですよね…。
♥ 0Who liked: No user下記のフックで無効化できるようです。
個別に無効化する方法は僕もわからないです…。
v16.0.2 で修正してみました。確認してみてください!
♥ 0Who liked: No user2022年1月28日 10:33 AM 返信先: Trying to get property ‘term_taxonomy_id’ of non-object in〜のエラーの解決方法 #97182@westwing さん
ブロックのレイアウトを「カルーセル(リッチメディア)」に変更しても同様のエラーがでますか?♥ 0Who liked: No user2022年1月28日 10:04 AM 返信先: Trying to get property ‘term_taxonomy_id’ of non-object in〜のエラーの解決方法 #97172@rumix63 さん
すみません、ちょっと僕が勘違いしていて、この修正ではこの不具合は解消されないようです。僕の環境でエラーが出る状態を再現したいと思うのですが、詳しい設定などを教えてもらえますか?任意のタクソノミーでカスタムタクソノミーを指定し、カスタム投稿(「投稿のビューテンプレート」を使用)を表示しているのかなと思いましたがあっていますか? また、この一覧に関連するなにかをフックでカスタマイズしたり、テンプレートを上書きしたりしていますか?
♥ 0Who liked: No userこちら、次のアップデートで解消されます!
お急ぎの場合はこちらのコードに差し替えてみてください。
js で URL を取得して条件分岐させるとかですかね?
♥ 0Who liked: No user基本的に、古いテーマで対応していた方法って無理なんでしょうか?
無理ではありませんが、オレインさんが書かれているように Snow Monkey のファイル構造に沿ったやり方で対応したほうが今後の運用負荷は下がると思います。
Snow Monkey はカスタマイズの影響範囲を必要最小限に抑えられるようにテンプレートファイルを細かく分割したり、レイアウトビューコントローラーという仕組みを使ったりしています。
archive.php
に記述してあるコードが少ないのはそのためです。ただ、絶対にレイアウトビューコントローラーを使わないといけないということはなくて、archive-drink.php
をつくり、その中にget_header()
やget_footer()
を記述して一般的なテーマのような書き方にすることもできます。が、そのようなやり方だと自分で書くコードの量が増えてメンテナンスコストがあがるので、先に書いたように Snow Monkey のファイル構造に沿ったやり方で対応するのがベターだと思います。
2022年1月26日 3:13 PM 返信先: TOPページに2カラムの上に1カラムを表示しているのですが1カラムを全幅にしたいのと、1カラムの画像を他のカスタムリンクのページでは非表示にしたい。 #96927トップページかどうかは
is_front_page()
という WordPress 標準の関数で判定できます。if ( ! is_front_page() ) { return; }
のようにして、トップページのときだけ処理せずに抜けるようにすると良いと思います。
♥ 0Who liked: No user -
投稿者投稿