WordPressでテーマの任意の位置にウィジェットエリアを追加する方法とこのブログでの活用事例 featuring 「Newpost Catch」
「Newpost Catch」というWordPress用のプラグインをご存知でしょうか?
こちらはウィジェットという形で最新記事を、サムネイル画像付きで表示してくれるという、ブロガーとって超絶便利なプラグインになります。
プラグインが便利なのは、いちいちPHPのコードを書かなくても、モジュールとして私のようなライトユーザーでも手軽に機能を利用できるところなわけです。
このステキすぎるプラグインを作ったのが「今村だけがよくわかるブログ」の今村さんという方。
今でこそ仲良くしていただいている今村さんなのですが、元々彼のことを知ったのが何を隠そうこの「サムネイル付で新着記事を出したい」と調べていた時のことで、その後リアルでお会いしたときにはテンションが上がりまくったのを思い出します。
さて、初めてこのプラグインに出会ってから少し時は流れ、ブログもここタムカイズムに移転してしばらくたったころ、トップページのデザインに手を入れたいと思う時がありました。
具体的にはトップページに特定のカテゴリの新着記事を、サムネイル付で表示したいな、と。
そこでテーマの任意の位置に「Newpost Catch」を入れることができれば、それが実現できるじゃないか!と思いついたわけです。
いままでウィジェットはテーマのデフォルトで用意されたサイドバーの物しか使ったことがなかったのですが、まずはこちらをトップページに追加することから着手しました。
ようやく本題の部分です(笑)
任意の位置にウィジェットを追加するにはfunctions.phpを編集する
私はこちらのサイトを参考にさせていただきました。
▼[WordPress]ウィジェットエリアを好きな場所に追加するカスタマイズ | ty’s empty flog
具体的にはfunctions.phpにウィジェットを使用可能にする関数
if ( function_exists('register_sidebar') ) { register_sidebar();}
と言うのを設定します。
ほとんどのテーマであればこちらは存在していると思います。
register_sidebar();
そしてこの部分をパラメーターとともに追加してあげることでウィジェットエリアを増やすことができます。
私のソースですと
if ( function_exists('register_sidebar') ){ //ここから register_sidebar(array( 'name' => 'サイドバー2', 'id' => 'sidebar2', 'description' => 'ウィジェットエリアの説明', 'before_widget' => '<div>', 'after_widget' => '</div>', 'before_title' => '<h3>', 'after_title' => '</h3>' )); //ここまでをコピー }
とこんな感じでエリアを増やしています。
idを変えてあげることでエリアをどんどん増やすこともできます。
呼び出す際には
<?php dynamic_sidebar(sidebar2); ?>
というコードをテーマ内に記述するとそこがウィジェットエリアとして機能するようになり、設定画面からこの部分にウィジェットを追加できるようになります。
Newpost Catchをトップページで使うのもオススメ
これができるようになると冒頭の「トップページに特定のカテゴリの新着記事を、サムネイル付で表示」は簡単にできます。
私のブログであれば「日本酒」や「ビール」といったカテゴリの記事は、まとまって初めて意味を持つものだと思っているので、他の新着に紛れないようにまとめてみせるようにしています。
というようなことを書いていたら、作者である今村さん自身にご紹介いただいていました。
▼【「Newpost Catch」プラグインおすすめ導入事例】「カテゴリ別新着記事」のじょうずな使い方
本当にありがたいです。
とくにトップページへの導入は作者ですら気づかない自然さだったようです(笑)
また、トップページ右下のプロフィール欄は全ページではないものの、いくつかのページで出てくるのですが、これまでは複数のphpを編集していたものが、ウィジェットを一つ書き換えるだけでよくなりました。
と、こんな風に使い方によって色々できることが広がるウィジェットエリアの追加と「Newpost Catch」のご紹介でした。
注意:functions.phpはエラーを起こすとブログが真っ白になったりするので、絶対コピーを取ってから編集しましょうね!
iMMRcにワシヅカミされてるタムカイでした。