WordPressの投稿・固定ページにショートコードで挿入出来るウィジェットを作ろう!

WordPressテーマ

ウィジェットに設定した内容をショートコードで投稿や固定ページに使いたいなぁ…と思う事ってありますよね。それはちょっとしたコンテンツだったりAdSenseのような広告だったりと使い方は人それぞれですが、標準でその機能を持ったテーマというのはありそうでなかなか無いのが実情です。そこで当エントリーではそのウィジェットを作ろう!という内容になります。

例によって素人が見よう見まねで作ってみましたレベルのモノですんで、ご利用は自己責任という事でお願いしたいですが、万が一失敗してWordPressが真っ白になってもドンマイですよ?

当エントリーは私が過去に公開していたサイトのリライト記事になります。
WordPressの投稿・固定ページにショートコードで挿入出来るウィジェットを作ってみた

カスタムショートコードの作成

ぶっちゃけコレはSTINGER系テーマのmicata2をイジっている時にいいなぁと思った「オリジナルのショートコード作成ウィジェット」機能からパk…もといインスパイアされたものですが、micata2ではウィジェットに設定した内容をテンプレートを使って挿入していたので、それを子テーマのfunctions.phpのカスタマイズだけで出来るようにしてみました。

一応いくつかのテーマで動作確認はしてあります。

動作確認済みのテーマ

  • Simplicity
  • Luxeritas
  • STINGER PLUS+
  • STINGER8
  • micata2
  • Sentry
  • Xeory Base
  • Emanon Free

この中に名前の挙がっていないテーマでも特に問題は無いかと思いますが、AMP対応に関しては一切考慮していませんので、その点はご自分で何とかしていただく方向でよろしくお願いしますね?

ウィジェットエリアの作成

出来ればイジりたくないファイルのfunctions.phpを編集する事になりますが、慣れてしまえばどうという事はありません。その内に真っ白画面がなんぼのもんじゃいと思えるようになるでしょう、たぶん。

私はもう飽きるくらい見てますからね、HAHAHA(笑えない)

心配な方は必ずfunctions.phpのバックアップを取ってから作業して下さい。

やる事はいたって簡単でfunctions.phpの最後に以下のコードをコピペするだけです。

カスタムショートコード用ウィジェット
/* カスタムショートコード用ウィジェット */
if ( function_exists( 'register_sidebar' ) ) {
    register_sidebar( array(
        'id' => 'custom-sc',
        'name' => 'カスタムショートコード用ウィジェット',
        'description' => 'カスタムショートコード用のウィジェットです。',
        'before_widget' => '<div class="custom-sc">',
        'after_widget' => '</div>',
        'before_title' => '<p>',
        'after_title' => '</p>'
    ) );
}

if ( !function_exists( 'custom_sc' ) ) {
    function custom_sc() {
        ob_start();
        dynamic_sidebar( 'custom-sc' );
        $osc = ob_get_clean();
        return $osc;
    }
    add_shortcode( 'customsc', 'custom_sc' );
}

<div>や<p>のHTMLタグとクラス名は好みで変えていただいて結構です。最後のハイライト行にあるcustomscはショートコードの呼び出しに使う部分になりますが、それも自分が使いやすい名前に変更してOKです。

ウィジェットの設定

functions.phpに記述した内容に間違いが無ければ、ウィジェット画面を開いた時にこんな感じでカスタムショートコード用のウィジェットエリアが増えているはずです。ここでは例としてテキストウィジェットを設定してみる事にしましょう。

現在のWordPressのバージョンではHTMLタグを使う場合、カスタムHTMLウィジェットを使う事が推奨されています。

カスタムショートコードウィジェットの設定

内容はCTAっぽいコンテンツでもAdSenseの広告コードでも何でもOKですが、あくまでもウィジェットに設定された内容をそのまま表示するだけなので、必要に応じてHTMLタグで括って下さい。もちろんテキストウィジェットに限らずカテゴリーでもタグクラウドでも自由に放り込む事が出来ます。

ちょっとしたコンテンツを作りたい場合は、まず投稿や固定ページでプレビューしながら作成して、完成したところでテキストエディタからタグごとごっそりコピペするとそれっぽくなりますのでご参考までに。

ショートコードの呼び出し

使い方は通常のショートコードと同様で、ウィジェットに設定した内容を表示させたい場所に[customsc](変更していればその名前)と記述するだけで利用出来ます。

カスタムショートコードの呼び出し

この例だと見出し1と見出し2の間にウィジェットの内容が表示されます。

カスタムショートコードの表示

一応表示はされましたが何だかパっとしないサンプルでしたね…ウィジェットタイトルが不要な場合は何も入力しなければ表示されません。

人気記事のウィジェットなどを挿入する事も出来ますんで、フロントページにカテゴリー毎の人気記事を表示するといった使い方もやろうと思えば出来なくはないかと思います。

カスタムショートコード 人気記事を表示してみる

使い方はアイデア次第

他のテーマから拝借した機能なのでオリジナリティには欠けますが、使い方によってはなかなか便利ではないかと思います。複数のウィジェットエリアを用意して使い分けたい場合は、名前が被らないように接尾語をつけたりして必要な数だけコピペして増やす事も出来ます。

何と言っても比較的簡単に実装する事が可能なので、複雑なカスタマイズはノーサンキューという方にもオススメ出来るのではないでしょうか。気が向いたらぜひ一度お試しを。