WordPressで投稿記事によってウィジェットを出し分ける4個の方法と比較

この記事は約6分で読めます。

2017-03-30Luxeritas, WordPressカスタマイズ

本記事では条件分岐によってウィジェットを出し分ける方法を4個紹介します。
例えば、

質問者の写真

この記事にはAdSenseを出したいけど、この記事では出したくない!
 

そういう時に役立ちます。

方法1 ウィジェット出し分け機能のついたテーマを使う

Luxeritasのウィジェット条件分岐機能

当サイトでも使っている無料人気テーマLuxeritasには簡易ウィジェット出し分け機能がついています。
AdSenseその他テキストベースのウィジェットであれば、条件を設定して表示・非表示が切り替えられます。

具体的には「アドセンス(Luxeritasオリジナル)」を使います。

(画像:Luxeritasのアドセンスウィジェット)主にアドセンス用だけど、テキスト・HTML 等、なんでも書けます。このウィジェットは指定したページで表示・非表示を切り替えられます。

条件分岐の項目は以下の通り。

細かな設定こそできませんが、基本的にはこれで足りると思います。

こんな人におすすめ

解答者の写真
WordPressを始めたばかりの初心者
 

積極的な意味でも消極的な意味でもです。

積極的な意味としては「最低限の機能があり、直観的で使いやすいこと」。
これ以上のことをやりたければ、改めて方法を研究すればいいです。

消極的な意味としては「プラグインを入れずに済む」。
詳しくは方法2にて説明します。

方法2 ウィジェットの出し分けプラグインを使う

条件分岐プラグイン

ウィジェット条件分岐プラグインで有名なのは以下の2つです。

Widget Logic

PHPコードがわかる方向け。

ある程度でしたら、コードを入力して直接制御できます。

Jetpack or Display Widgets

GUIのみで操作したい方向け。

使い方はLuxeritasとほぼ同じ。
ただしこちらの方が表示・非表示のどちらでもでき、カテゴリーによる分岐などもできます。

こんな人におすすめ

解答者の写真
勧めません!
 

 

WordPressに慣れたらわかります。

サイト作りはサイト速度との戦い。
速度対策においては「いかにプラグインを減らすか」も重要課題の1つです。

始めたばかりの頃は「(やりたいこと) WordPress」で検索して、出てきたプラグインを入れがち。
プラグインが膨れあがってサイトが激重になった頃、自らが黒歴史を刻んできたことを悟ります。

質問者の写真

私もその一人だけどね……
 

早い内から、できるだけプラグインに頼らない癖をつけましょう。

あえて言うなら、

解答者の写真
法人(特に中小企業)ユースで専門知識のない人が自力で作ろうとする場合
 

本業が忙しくて勉強する時間なんてないでしょうから

方法3 予め分岐を仕込んだウィジェットを置く

具体的なウィジェットの作り方

PHPファイルに記述してインクルードします。

方法2でやっていることをプラグイン無しで行うという話です。
Widget Logicを使えるくらいのPHP知識があるなら十分できます。

例えばスマートフォン以外ではアドセンスを表示したい場合、

<?php if (!wp_is_mobile()) :?>
【アドセンスコード】
<?php endif; ?>

このコードを記述したpcadsense.php(名前は何でもいい)を作成し、アップしてショートコードで実行します。

こんな人におすすめ

解答者の写真
どうしても凝った分岐をしないといけない人
その上でPHPがある程度わかる人
 

条件分岐絡みの多くは、この方法で解決できると思います。
もしPHPがわからなくても「PHP (分岐したい条件)」で検索すればなんとかなります。
実際に私、それで対処してきましたので。

方法4 投稿テンプレートの使い分けで分岐する

投稿テンプレートによって分岐する方法

「記事ごと」の条件分岐なら、基本的には一番楽かつ柔軟だと思います(Luxeritasユーザー以外)。

例えば「アドセンスあり、別の広告、どちらも無し」の3つのテンプレートで振り分けます。
最初にテンプレートを用意しておけば、あとは記事ごとに選択することで出し分けることが可能です。

以下はLuxeritasを例に記します。
子テーマの使用が前提です。
他のテーマの場合は、テーマに応じてアドセンス表示コードの削除だけ読み替えて下さい。

広告無し用の投稿テンプレートを作成

single.phpを親テーマから抜き出し、single-noadsense.phpとリネームします。

single-noadsense.phpの冒頭に次の記述を加えます。

<?php
/*
Template Name: noadsense
Template Post Type: post
*/
?>

single-noadsense.phpの中から次の記述を削除します。

 if( isset( $luxe['adsense_visible'] ) ) echo apply_filters('thk_adsense', ''); // アドセンス

子テーマ直下にアップします。

他広告用の投稿テンプレートを作成

例えばAmazonなら、上記同様single-amazon.phpファイルを作成します。

single-amazon.phpの冒頭に次の記述を加えます。

<?php
/*
Template Name: amazon
Template Post Type: post
*/
?>

single-amazon.phpの中から次の記述を削除します。

 if( isset( $luxe['adsense_visible'] ) ) echo apply_filters('thk_adsense', ''); // アドセンス

広告を出したい任意の場所にAmazonアソシエイトのコードを記述します。
同じ場所に出したいなら、次の<aside>の下がいいと思います。

</div><!--/.post-->
<aside>
<?php


 if( isset( $luxe['sns_bottoms_enable'] ) ) {
 if( isset( $luxe['sns_bottoms_msg'] ) ) {
?>

子テーマ直下にアップします。

完成

投稿編集画面からテンプレートを選択すれば反映されます。

こんな人におすすめ

解答者の写真
Luxeritas、その他条件分岐機能のついたテーマのユーザー以外の人
 

Luxeritasの場合はテーマの機能でまったく同じことができますので。

まとめ

解答者の写真
4個の方法と書いたけど、実際には3個かな
方法1か方法4と方法3を組合せながら対処していくことになると思う
 
※当サイトの会話アイコンはカスタムキャストで作成しています。©2018-2019 Custom Cast, Inc.
この記事を書いた人:天満川 鈴

広島市内のパチンコホール勤務。
3号機時代からのパチンカス。

ADHD、精神障害者手帳3級所持。

慶應義塾大学商学部→国家一種経済職→公安調査庁。
在職時は国際テロ、北朝鮮を担当。

「小説家になろう」の底辺作者。
朝鮮総聯へのスパイ工作を描いた小説「キノコ煮込みに秘密のスパイスを」はアマチュア小説ながら週刊誌報道され、話題となった。

Posted by 天満川 鈴