- このトピックには13件の返信、2人の参加者があり、最後にNAUTICA(ノーチカ)により2年、 2ヶ月前に更新されました。
-
投稿者投稿
-
2022年8月30日 2:31 PM #110193
【お使いの Snow Monkey のバージョン】17.2.4
【お使いの Snow Monkey Blocks のバージョン】16.0.6
【お使いの Snow Monkey Editor のバージョン】8.0.2
【お使いのブラウザ】Google Chrome 104.0.5112.101
【当該サイトのURL】https://mor-a.com/works/windmuhlebunkyo/### 発生している問題
上記のサイトでSnow Monkeyを使用させていただいています。
My Snow Monkeyで一部カスタマイズしております。表題の通りページ最下部,関連記事(WORKSと表記変更中)のカテゴリーラベルが,表示中の投稿のカテゴリーを参照してしまいます。
記載しているURLでは,すべてのラベルがすべて「2022」になっていますが,実際は違う年の実績です。
他の実績ページでも同様です。カテゴリーの構成は,以下のようになっております。
WORKS
├2022
├2021
├2020
├以下続く投稿のメインカテゴリーはWORKSです。
### 試したこと
My Snow Monkeyプラグインを無効化してみましたが,変化は見られませんでした。
♥ 0いいねをした人: 居ません2022年8月31日 9:34 AM #110223ちょっと挙動が怪しいですね…。念の為確認させてください。
WORKS の各施設のページは投稿タイプが「投稿」で、それに紐づくカテゴリーとして
WORKS(親) ├2022(子) ├2021(子) ├2020(子) ├以下続く(子)
になっているということであっていますか?
♥ 0いいねをした人: 居ません2022年8月31日 12:29 PM #110227さっそくありがとうございます。
投稿タイプ,カテゴリーとも間違いありません。
よろしくお願いします。♥ 0いいねをした人: 居ません2022年8月31日 12:45 PM #110229ありがとうございます。下記の環境で試してみました。
## カテゴリー
WORKS(親) ├ 2022(子) ├ 2021(子)
## 記事
- Works 2022-A (カテゴリー:2022) - Works 2022-B (カテゴリー:2022) - Works 2021-A (カテゴリー:2021)
—
この状態で「Works 2022-A」を開くと、関連記事として「Works 2022-B」が表示され、そこには「2022」のラベルが表示されました。また、「Works 2021-A」を開くと、カテゴリー2021に該当する記事が他にないので関連記事は表示されませんでした。これは僕が想定していた挙動なのでここまでは問題ないかと思います。
試してみて気になったのは、そもそもなぜ「WINDMÜHLE=BUNKYO」を開くいたときにカテゴリー2022以外の記事が関連記事に表示されるのかということです。関連記事の表示条件はカテゴリー一致&タグ一致なので、「WINDMÜHLE=BUNKYO」のカテゴリーが2022であれば2015等の記事は関連記事の表示条件に一致しないので表示されないはずです。
子テーマで関連記事まわりをカスタマイズしているとか、年号のカテゴリー以外に何らかのカテゴリーやタグを設定されていたりしますかね?
♥ 0いいねをした人: 居ません2022年8月31日 1:02 PM #110231確認ありがとうございます。
タグの設定はしていません。他のカテゴリーとしてはNOTE,STAFFが存在します。
WORKS内の投稿は,すべてメインカテゴリーはWORKS,サブカテゴリーとして年号が設定してあります。可能な範囲で管理画面の画像を添付します。
投稿一覧
カテゴリー一覧
投稿「WINDMÜHLE=BUNKYO」のカテゴリー設定
♥ 0いいねをした人: 居ません2022年8月31日 1:04 PM #110233なるほど! こちらでも現象確認できました。一応現状でも「Works」を外して年のカテゴリーだけ付与すれば正しい表示になると思いますが、それだと関連記事以外の部分に影響がでそうでしょうか?
♥ 0いいねをした人: 居ません2022年8月31日 1:12 PM #110236確かにWORKSを外すと同じ年号のものだけが表示されますね。
ただ,トップページのラベルが年号になってしまいます。ここはWORKSになってほしいです。
仕様上の問題もあるかと思いますが,希望としては,関連記事にはWORKS内のいろんな年号のものが出てほしいので,ラベルもその投稿の年号が出るのが理想ではあります。
可能でしょうか?
♥ 0いいねをした人: 居ません2022年9月1日 12:59 PM #110278ただ,トップページのラベルが年号になってしまいます。ここはWORKSになってほしいです。
仕様上の問題もあるかと思いますが,希望としては,関連記事にはWORKS内のいろんな年号のものが出てほしいので,ラベルもその投稿の年号が出るのが理想ではあります。
なるほどです。現状はご指摘のバグがあるのでそれは改修中ですが、各ページでラベルの内容を出し分けたいのであればフックを使ってカスタマイズするのが良い(というか安全)だと思います。一応 Snow Monkey 的には複数のカテゴリー(ターム)指定や複数のタクソノミーがあったときに何を優先するかという指定を特にしていないので、WordPress の関数が先に返したものが使われる、というのが基本になります。なので例えば今サブカテゴリーが表示されていたとしても、何かの拍子に親カテゴリーが表示されるようになるというのはありえると思うので、そういう意味ではフックを使って何を出すかを固めちゃったほうが良いのかなと。
♥ 0いいねをした人: 居ません2022年9月2日 11:44 AM #110319とりあえず v17.2.5 で修正してみましたがどうでしょうか? 確認お願いします!
♥ 0いいねをした人: 居ません2022年9月6日 10:56 AM #110531ご対応ありがとうございました。
どのラベルもメインカテゴリーが表示されるようになりました。WORKSアーカイブの中は,下記のトピックを参考にフックで年号が表示されるように変更しました。
ただ,投稿の関連記事のところがテンプレートパーツまではわかったのですが,その先がわかりませんでした。
ちょっと教えていただけませんでしょうか。add_filter( 'snow_monkey_get_template_part_args_template-parts/content/related-posts', function( $args ) { //この中 } );
♥ 0いいねをした人: 居ません2022年9月7日 11:26 PM #110614WORKSアーカイブの中は,下記のトピックを参考にフックで年号が表示されるように変更しました。
こっちの環境でも試したいので、そのコードを共有してもらうことってできますか?
♥ 0いいねをした人: 居ません2022年9月8日 10:24 AM #110628ありがとうございます。
北島さんのサンプルコードそのまんまなのですが,my-snow-monkey.php
に以下の通り追加しています。/** * カテゴリーラベル */ add_filter( 'snow_monkey_get_template_part_args_template-parts/loop/entry-summary/term/term', function( $args ) { // カテゴリーアーカイブあるいはタクソノミーアーカイブのとき if ( is_category() || is_tax() ) { // ページのクエリ情報を取得 $queried_object = get_queried_object(); // その投稿に割当てられているカテゴリー(タクソノミー)を全て取得 $terms = get_the_terms( get_the_ID(), $queried_object->taxonomy ); // 取得したカテゴリー(タクソノミー)のうち、最後のタームをカテゴリーラベルとして使用する $args['vars']['_terms'] = [ end( $terms ) ]; } return $args; } );
♥ 0いいねをした人: 居ません2022年9月8日 11:39 AM #110635ありがとうございます。試してみたのですが、僕の環境ではそのコードでは年にならず「Works」のままでした。カテゴリーを登録する順番とか、何かが影響するのかもしれません。
ということで、上記のコードを改変して、下記のコードにして追加してみました。
add_filter( 'snow_monkey_get_template_part_args_template-parts/loop/entry-summary/term/term', function( $args ) { // カテゴリーアーカイブあるいはタクソノミーアーカイブあるいは投稿のとき if ( is_category() || is_tax() || is_singular( 'post' ) ) { // ページのクエリ情報を取得 $queried_object = get_queried_object(); // その投稿に割当てられているカテゴリーを全て取得 $_terms = get_the_terms( get_the_ID(), 'category' ); if ( ! $_terms ) { return $args; } $new_terms = []; // 割当てられているカテゴリーのうち、カテゴリー名が数字4桁のものがあればそれを使う foreach ( $_terms as $_term ) { if ( preg_match( '|^\d{4}$|', $_term->name ) ) { $new_terms[] = $_term; break; } } $args['vars']['_terms'] = $new_terms; } return $args; } );
♥ 0いいねをした人: 居ません2022年9月8日 2:13 PM #110683さっそくありがとうございます。
コードを書き換えたところ,カテゴリーアーカイブと投稿の関連記事もうまく表示されました!
判定のところで応用もできそうですね。試してみたのですが、僕の環境ではそのコードでは年にならず「Works」のままでした。カテゴリーを登録する順番とか、何かが影響するのかもしれません。
なるほど…参考までにこちらの環境では「WORKS」のカテゴリーIDの方が年のカテゴリーIDより古いです。
いろいろと勉強になりました。ありがとうございます!
♥ 0いいねをした人: 居ません -
投稿者投稿
- トピック「関連記事のカテゴリーラベルが表示中の投稿のカテゴリーになる」には新しい返信をつけることはできません。