- このトピックには4件の返信、2人の参加者があり、最後に
happy_smileにより2週、 5日前に更新されました。
-
投稿者投稿
-
2025年5月8日 10:18 AM #145109
【お使いの Snow Monkey のバージョン】 バージョン: 28.0.0
【お使いの Snow Monkey Blocks のバージョン】バージョン 23.0.2
【お使いの Snow Monkey Editor のバージョン】 バージョン 10.1.2
【お使いのブラウザ】Google Chrome### 実現したいこと
投稿の一覧で、各投稿のカテゴリーを複数表示にしたのちカテゴリーの順番を希望通りにしたい。
### 試したこと
投稿のカテゴリーを複数表示させるため以下のURLを参考にPHPとCSSを書き込んだ
さらに、カテゴリーの順番を変えるためCSSに「order」を使い、なんとか順番が変わらないか試みた⇩
.c-entry-summary__term.c-entry-summary__term–category-17.c-entry-summary__term–category-slug-1 {
order: 1;
}
.c-entry-summary__term.c-entry-summary__term–category-9.c-entry-summary__term–category-slug-2 {
order: 2;
}
.c-entry-summary__term.c-entry-summary__term–category-8.c-entry-summary__term–category-slug-4 {
order: 3;
}上記の内容では何も変化がなかった。
という流れになります。どうすれば順番を変えることができるのでしょうか…m(_ _)m
よろしくお願いいたします。♥ 0Who liked: No user2025年5月8日 1:19 PM #145116フレックスボックスじゃないから
order
が効かないのかもしれません。PHP で、$args['vars']['_terms']
に格納した順番のまま画面に出力されるので、そこで調整すると良いかもです。下記のように書き換えてみるとどうでしょうか?
add_filter( 'snow_monkey_get_template_part_args', function( $args ) { // 記事一覧カテゴリー以外のテンプレートの場合は無視 if ( 'template-parts/loop/entry-summary/term/term' !== $args['slug'] ) { return $args; } // 投稿以外の場合は無視 if ( 'post' !== $args['name'] ) { return $args; } // 全ての設定されたカテゴリーを返す $raw_terms = get_the_terms( get_the_ID(), 'category' ); // 並び順指定用の配列を用意 $sorted_terms = array( 'category-17', // 1番目に表示したいタームのスラッグ 'category-slug-2', // 2番目に表示したいタームのスラッグ 'category-slug-4', // 3番目に表示したいタームのスラッグ ); // 並び順を反映させた配列を生成 foreach ( $raw_terms as $raw_term ) { $sorted_terms[ $raw_term->slug ] = $raw_term; } $args['vars']['_terms'] = $sorted_terms; return $args; } );
♥ 0Who liked: No user2025年5月11日 10:32 PM #145160キタジマ様ご返信ありがとうございます。
教えていただいた内容をmy-snow-monkey.PHPに書き込んでみたのですが、理想としている順番にならなかったり、他の部分がエラーとなってしまいました。後、教えていただいたコードの
// 並び順指定用の配列を用意
$sorted_terms = array(
‘category-17’, // 1番目に表示したいタームのスラッグ
‘category-slug-2’, // 2番目に表示したいタームのスラッグ
‘category-slug-4’, // 3番目に表示したいタームのスラッグ
);上記の部分の順番を変えても理想の順番にはなりませんでした。
ご教授いただけましたら幸いです。
よろしくお願いいたします。♥ 0Who liked: No user2025年5月12日 9:47 AM #145162すみません、改良してみましたがどうでしょうか?
add_filter( 'snow_monkey_get_template_part_args', function( $args ) { // 記事一覧カテゴリー以外のテンプレートの場合は無視 if ( 'template-parts/loop/entry-summary/term/term' !== $args['slug'] ) { return $args; } // 投稿以外の場合は無視 if ( 'post' !== $args['name'] ) { return $args; } if ( 'category' !== $args['vars']['_terms'][0]->taxonomy ?? null ) { return $args; } // 全ての設定されたカテゴリーを返す $raw_terms = get_the_terms( get_the_ID(), 'category' ); // 並び順指定用の配列を用意 $sorted_terms = array( "category-17" => null, 'category-slug-2' => null, 'category-slug-4' => null, ); // 並び順を反映させた配列を生成 foreach ( $raw_terms as $raw_term ) { $sorted_terms[ $raw_term->slug ] = $raw_term; } $args['vars']['_terms'] = array_filter( $sorted_terms, function( $value ) { return is_object( $value ); } ); return $args; } );
が、これ
$sorted_terms
に全部のタームのスラッグを記述しないといけないのがメンテナブルではないなぁという気がします。なのでタームの並び順を指定できるプラグインを試してみるのも手かなぁと思いました。
※しばらく開発されていないみたいなので積極的に採用して良いのかは微妙かもですが…
♥ 0Who liked: No user2025年5月12日 3:11 PM #145174 -
投稿者投稿
- トピック「投稿の一覧で、各投稿のカテゴリーを複数表示にしてみたがカテゴリーの順番が希望通りにならない」には新しい返信をつけることはできません。