[ 解決済 ] 投稿記事のピン止め設定について
[ 解決済 ] 投稿記事のピン止め設定について
-
投稿者投稿
-
2024年3月21日 2:46 PM #88975
令子岡山参加者■ WordPress のバージョン
6.4.3■ テーマ・プラグインは全て最新版で確認してください。
確認しました。■ テーマの種類
Katawara■ テーマのバージョン
1.24.0■ 期待する動作
特定の投稿記事が、常にカテゴリ内の投稿一覧の先頭に表示されるようにしたいと思っています。■ 自分で試した事
該当の投稿記事の設定で「ブログのトップに固定」にチェックを入れています。■ 症状が発生するブラウザ
全て■ 実際の症状
新たに追加した記事よりも下に表示されており、先頭行に表示されません。
どのような設定をすれば、先頭行に固定表示されるでしょうか。2024年3月21日 3:08 PM #88980
Vektor,IncキーマスターKatawaraのご利用ありがとうございます。
特定の投稿記事が、常にカテゴリ内の投稿一覧の先頭に表示されるようにしたいと思っています。
おそらくですが、WordPress標準の「最新の投稿」ブロックや、クエリーループブロックで 「ブログのトップに固定」 が効いていないのではないでしょうか。
WordPress標準の「最新の投稿」ブロック、クエリーループブロックは、「ブログのトップに固定」 に対応していないようです。
VK Blocks Pro の「投稿リスト」ブロックは先頭固定が効きますので、こちらをお試しください。よろしくお願いいたします。
2024年3月21日 3:30 PM #88982
令子岡山参加者ご回答をありがとうございます。
WordPress標準の「最新の投稿」、VK Blocks Pro の「投稿リスト」のいずれも入れてテストしましたが、どちらも同じ動きで、後で追加した記事の方が先頭固定にチェックした記事より上に出てきてしまいます。2024年3月21日 3:47 PM #889832024年3月22日 5:38 AM #89004先頭固定表示は、投稿トップ以外のアーカイブページでは効きません。
これは WordPress の仕様になります。そして、カスタマイズ方法についていろいろトライしましたが
* 先頭固定表示の投稿情報は $sticky_posts = get_option(‘sticky_posts’); で取得可能
* $sticky_posts と pre_get_posts による通常のメインクエリの改変では対応は難しい
* 投稿トップでの先頭固定表示の処理は wp-includes/class-wp-query.php に書いてあるので参考にはなる
* 先頭固定表示の投稿を投稿一覧の先頭に追加で表示する事自体はさほど難しくないが、その投稿の表示形式は手書きで書かないといけないので、いろいろ熟知した人間でないと難しい
* 先頭固定表示の投稿が表示中のアーカイブページに含まれる記事なのかどうかを判定して表示を出し分ける必要もある
* 表示中のページで表示するべき先頭固定表示の投稿数だけ通常の投稿一覧から削除する処理をしないと、二重に表示されたりページ送りの件数が揃わないので、その処理をするのが面倒
* Lightning や Katawara に標準で存在するアーカイブページの表示形式変更機能は効かなくなる
* 負荷が増えるので、この機能が必要ない人にはデメリットにしかならないという感じで、実践したいのはやまやまですが最短でも丸1日以上かかりそうなレベルで、とは今は業務も大幅に遅れておりますので公式から回答するのは難しいです。と言いますかいろいろ要望に応じて専門のカスタマイズが必要なので、汎用の回答が難しいです。
別の手法としては、先頭固定識別用のカスタムフィールドを設定して、そこにチェックがはいっているものを先に表示するように pre_get_posts で指定できるのではないかなと感じたりはしますが、それも検証に時間を要します。
現状個別のカスタマイズに対応する余裕がない(既に検証自体に3時間ほど使ってしまいましたが…)ため、恐れ入りますが必要に応じて https://showcase.vektor-inc.co.jp/ に記載の方など専門の業者様に別途依頼など検討くださいませ。2024年3月22日 9:14 AM #89019
令子岡山参加者横からありがとうございます。まさに、「カテゴリーアーカイブページ または 特定のカテゴリーで絞り込んだときに先頭に表示したい」です。
2024年3月22日 9:21 AM #89021
令子岡山参加者お忙しい年度末の時期に3時間もお時間を奪ってしまい、誠に申し訳ございません。
先頭固定表示が投稿トップのみの機能と知らず、お手数をおかけしました。今回の件、やりたいことは簡単に表現できて一見簡単そうに思えていましたが、実現しようと思うと、かなり無理がありますね・・。
とりあえずは、レイアウトは変わりますが、「お知らせ」カテゴリとは別の「ピックアップ情報」カテゴリを別途作って、常時表示したいものは「ピックアップ情報」カテゴリにチェックすることで常時表示させようと思います。
皆様、ありがとうございました。
2024年3月22日 9:37 AM #89025ひとつの案です。
以下のフィルターフックで標準投稿の予約投稿を無効にできます。
function my_wp_insert_post_data( $data ) { if ( $data['post_type'] == 'post' && $data['post_status'] == 'future' ){ $data['post_status'] = 'publish'; } return $data; }; add_filter( 'wp_insert_post_data', 'my_wp_insert_post_data' );
先頭に表示したい投稿を未来の日付で書けば、その日までは確実に先頭に表示されます。
すでに予約投稿を使っている場合はダメですけど…。
2024年3月23日 8:14 AM #89107はい、気になると他にやる事があっても試さずにいられないいしかわでございます。
> 別の手法としては、先頭固定識別用のカスタムフィールドを設定して、そこにチェックがはいっているものを先に表示するように pre_get_posts で指定できるのではないかなと感じたりはしますが、
→ 試しましたが無理でした…orz
専用の表示用のカテゴリーを作って、
それだけを表示するループと、それを除外するループの二つ構成じゃないと無理っぽいという報告デス。案件に応じた手作り決め打ち仕様なら可能ですが、
管理画面からの設定で実現可能な汎用実装ではやはり困難という見解です (´;ω;`)2024年3月23日 9:51 AM #89113はい、こういうやりとりきらいじゃない、つしまでございます。
こんなやり方、いかがでしょうか?
■VK 投稿リスト の場合
.pickup-postlist .vk_post { order: 2; } .pickup-postlist .vk_post.category-pickup { order: 1; }
pickup-postlist
は VK 投稿リスト ブロックの 追加 CSS クラス、
pickup
はピックアップ記事のカテゴリーのスラッグです。■カテゴリーアーカイブページの場合
body:not(.paged) .vk_post { order: 2; } body:not(.paged) .vk_post.category-pickup { order: 1; }
先頭に表示したいピックアップ記事が投稿リスト (後者の場合は1ページ目) に含まれない場合はダメですが、用途から考えるとそういう可能性は低そうなので、たぶんこれでいけるのではないかと…。
2024年3月23日 9:59 AM #89115ふぁー!そういう事?
複数ページにまたがると挙動がおかしくなる欠点はありますが、
1ページ内に先頭表示したい記事があるなら実装の手軽さを考えると確かにありかも…投稿トップとしては標準の先頭固定ページを使えば先頭表示できるので、件数が多くてもいけるし、
カテゴリー別とかになれば件数が減るから、先頭固定したい記事が1ページ目に存在する可能性も上がりますしね…なるほど…さすがです!
2024年3月23日 11:03 AM #89118あっ…後者でクラス名の指定が抜けてるのにいま気づきました。訂正します😓
■カテゴリーアーカイブページの場合
body.archive:not(.paged) .vk_post { order: 2; } body.archive:not(.paged) .vk_post.category-pickup { order: 1; }
:not(.paged)
は要らないかもしれませんし、現実的な運用を考えると ↓ これだけでもいいのかもしれません。.vk_post { order: 2; } .vk_post.category-pickup { order: 1; }
-
投稿者投稿
- このトピックに返信するにはログインが必要です。