Cocoonテーマでサイドバーにカテゴリー別新着記事を表示する方法を検索したのですが、情報が全く出てこなかったのでこれを解決した方法をメモしておきます。
サイドバーにカテゴリー別新着記事を表示する方法がない?
よくある情報はトップページにカテゴリー別新着記事を表示する方法なのですが、これは今回の目標としてるサイドバーにカテゴリー別新着記事を表示する方法とは全く違うものになります。
トップページにカテゴリー別新着記事を表示する方法は特定のカテゴリーIDを指定して表示させるものですが今回のサイドバーにカテゴリー別新着記事を表示する方法は現在の記事のカテゴリーを取得してそのカテゴリーの新着記事をサイドバーに表示させるものです。←で問題なんですが
なんとCocoonにはこの機能が実装されてないんです…
サイドバーにカテゴリー別新着記事を表示できないので関連記事ウィジェットを使う
関連記事ウィジェットは現在の記事のカテゴリーに紐づいた記事をランダムに表示させます。←でこのランダムに記事を取得するのが問題でそのカテゴリーの新着記事を表示させたいんですが、関連記事ウィジェットには新着記事を表示させる機能は実装されていません。
じゃあどうすれば実現できるのか↓次の見出しに答えを書きます
cocoon-master/lib/widgets/related-entries.phpを書き換える
親テーマで関連記事ウィジェットを定義しているphpファイルを書き換えます。
‘random’ => 1,
上記の値を1から0に変更します↓
‘random’ => 0,
注意点としてこのやり方は親テーマのファイルを書き換えるのでテーマのアップデートをすると上書きされてしまい元に戻って機能しなくなります。わたしの場合はこれを理解したうえで修正しています。functions.phpで新たにウィジェットを定義することもできるのですが、いまいちいいやり方がわからなかったので、親テーマのファイルを書き換えました。
親テーマで実装されるべきだと思う
そもそもrandomという項目の値を書き換えるだけでよいのならばこのformの項目として追加するべきだと思うんですよね。なのになぜか作者はこれを実装していません。寝ログ | 寝ながら出来るコトや使えるモノを紹介という作者のブログではカテゴリー別新着記事を表示しているのになんでCocoonには実装してないの?って感じです。すいません余談でした。
まとめ
サイドバーにカテゴリー別新着記事を表示するには親テーマの「related-entries.php」の引数の値を書き換えます。ですがこのやり方は親テーマの更新があった場合に元に戻ってしまうのであまり推奨はできません。私の場合はそれを理解したうえで修正を行っています。
おそらくですが要望を出せば将来的にはチェックボックス等でカテゴリー別新着記事が表示できるようになるかもしれませんね。
コメント