お問い合わせはコチラから

WordPress ショートコードで好きな場所にウィジェットを配置する

サイト運営

WordPressのテーマにはウィジェットエリアが用意されています。

ウィジェットエリアに配置したウィジェットは常に表示されてしまいますが、好きな時に好きな位置に表示させられたら便利だと思います。

そこで、この記事ではウィジェットエリアをショートコードでダイナミックに配置する方法について説明します。

ウィジェットエリアをショートコードでダイナミックに配置する

コードの説明

3つの部分で構成されている。

  1. 新規にウィジェットの定義
  2. ウィジェットを実際に配置するコード
  3. そのショートコードの定義

ウィジットエリアは管理画面にいつでも表示されているが、ウィジェットが実際に配置されるかどうかはショートコードが呼び出されるかどうかで決まる。

追加するウィジェットの定義

///////////////////////////////////////
// 投稿本文中ウィジェットの追加
///////////////////////////////////////
register_sidebars(1,
array(
'name'=>'投稿本文中1',
'id' => 'widget-in-article1',
'description' => '投稿本文中の好きな位置に表示できるウィジェット。[set_my_ads1]',
'before_widget' => '<div id="%1$s" class="widget-in-article %2$s">',
'after_widget' => '</div>',
'before_title' => '<div class="widget-in-article-title">',
'after_title' => '</div>',
));
register_sidebars(1,
array(
'name'=>'投稿本文中2',
'id' => 'widget-in-article2',
'description' => '投稿本文中の好きな位置に表示できるウィジェット。[set_my_ads2]',
'before_widget' => '<div id="%1$s" class="widget-in-article %2$s">',
'after_widget' => '</div>',
'before_title' => '<div class="widget-in-article-title">',
'after_title' => '</div>',
));
register_sidebars(1,
array(
'name'=>'投稿本文中3',
'id' => 'widget-in-article3',
'description' => '投稿本文中の好きな位置に表示できるウィジェット。[set_my_ads3]',
'before_widget' => '<div id="%1$s" class="widget-in-article %2$s">',
'after_widget' => '</div>',
'before_title' => '<div class="widget-in-article-title">',
'after_title' => '</div>',
));
register_sidebars(1,
array(
'name'=>'投稿本文中4',
'id' => 'widget-in-article4',
'description' => '投稿本文中の好きな位置に表示できるウィジェット。[set_my_ads4]',
'before_widget' => '<div id="%1$s" class="widget-in-article %2$s">',
'after_widget' => '</div>',
'before_title' => '<div class="widget-in-article-title">',
'after_title' => '</div>',
));
register_sidebars(1,
array(
'name'=>'投稿本文中5',
'id' => 'widget-in-article5',
'description' => '投稿本文中の好きな位置に表示できるウィジェット。[set_my_ads5]',
'before_widget' => '<div id="%1$s" class="widget-in-article %2$s">',
'after_widget' => '</div>',
'before_title' => '<div class="widget-in-article-title">',
'after_title' => '</div>',
));

配置するショートコードの定義

//投稿本文などにダイナミックに配置できるウィジット用のshortcode
add_shortcode('set_my_ads1', 'add_widget_in_post1');
add_shortcode('set_my_ads2', 'add_widget_in_post2');
add_shortcode('set_my_ads3', 'add_widget_in_post3');
add_shortcode('set_my_ads4', 'add_widget_in_post4');
add_shortcode('set_my_ads5', 'add_widget_in_post5');

ショートコードで呼び出す関数の定義

やってることはとてもシンプル。

ウィジェットが定義されていたら、ウィジェットを配置する。

function add_widget_in_post1() {
if ( is_single() && //投稿ページのとき、固定ページも表示する場合はis_singular()にする
is_active_sidebar( 'widget-in-article1' ) //ウィジェットが設定されているとき
) {
dynamic_sidebar( 'widget-in-article1' );//本文中ウィジェットの表示
}
}
function add_widget_in_post2() {
if ( is_active_sidebar( 'widget-in-article2' ) //ウィジェットが設定されているとき
) {
dynamic_sidebar( 'widget-in-article2' );//本文中ウィジェットの表示
}
}
function add_widget_in_post3() {
if ( is_active_sidebar( 'widget-in-article3' ) //ウィジェットが設定されているとき
) {
dynamic_sidebar( 'widget-in-article3' );//本文中ウィジェットの表示
}
}
function add_widget_in_post4() {
if ( is_active_sidebar( 'widget-in-article4' ) //ウィジェットが設定されているとき
) {
dynamic_sidebar( 'widget-in-article4' );//本文中ウィジェットの表示
}
}
function add_widget_in_post5() {
if ( is_active_sidebar( 'widget-in-article5' ) //ウィジェットが設定されているとき
) {
dynamic_sidebar( 'widget-in-article5' );//本文中ウィジェットの表示
}
}

まとめ

広告を入れたり、入れなかったりする場合に使えるTipsだと思います。最近のテーマでは広告用にショートコードが用意されており、設定するのも楽ではありますが、単純なHTML以外の場合にはウィジェットを使うのも便利ではないでしょうか。

でも、こういうやり方はもう少ししたら廃れると思います。Wordpress5.0以降に導入されたブロックエディタが全てを変えていくでしょう。

この記事を書いた人
ブーン

はるばる日本よりオランダ王国へやってまいりました。
自分の経験が少しでも参考になれば嬉しいです。
お問い合わせは、『こちら』からお願い致します。

\ブーンをフォロー/
スポンサーリンク
サイト運営
\シェアお願いします!/
\ブーンをフォロー/
こんな記事も読まれています

失敗しないレンタルサーバーランキング

mixhost

不正アクセスに強くて使いやすいおススメサーバー
\本サイトで利用中/
メリット①:自動ウィルス駆除対応
メリット②:サイトの表示速度が速い!
メリット③:転送量の上限が多い!
メリット④:自由にプラン変更ができ、アクセス増にも対応できる!
メリット⑤:バックアップデータが無料で復元できる!
メリット⑥:Wordpressが簡単にインストールできる!
メリット⑦:どのプランでも初期費用が無料!
メリット⑧:10日間の無料お試し期間と30日の返金保証!

Conoha Wing

国内Wordpress最速の最強サーバー
メリット①:圧倒的な表示速度
メリット②:レンタルサーバーと独自ドメインがセットでお得◎
メリット③:プラン変更はすべてのプランで自由自在
メリット④:一か月の利用転送量の制限が緩い(9TB~)
メリット⑤:WordPresサイトの移行が簡単

エックスサーバー

国内シェアNo1の安定性と実績が魅力。ALL SSDで死角なしの万能サーバー。
メリット①:サイトの表示速度が安定して速い!
メリット②:アクセス負荷に強くて安定性が高い!
メリット③:24時間365日の充実サポートで安心!電話サポートもあり!
メリット④:転送量が多い!
メリット⑤:自動バックアップ機能付き!
メリット⑥:WordPressが簡単にインストールできる!
メリット⑦:10日の無料お試し期間がある!

タイトルとURLをコピーしました