アドセンス有と無の投稿記事を出し分ける、さらに別のアフィリエイト広告と貼り替えた投稿記事も出し分ける

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

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

 

本記事ではアドセンスありと無しの投稿を出し分ける方法を3つ紹介します。
これは、Luxeritas公式に寄せられていた次の問いに答えるもの。

Googleアドセンスを記事単位で貼らなかったり、別広告に張り替える機能が
欲しいと思いコメントさせていただきました。

ただしLuxeritas限定ではなく、どのテーマでも共通です。

※Luxeritasをお使いの場合は2.1で記事毎の出し分け機能が実装されました。
こちらの記事へお回りください。

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

Widget Logic

PHPコードがそれなりにわかる方に推奨。

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

Jetpack or Display Widgets

中身は恐らく同じ、使い方も同じ。
GUIのみで操作したい方向け。

表示するかしないか、カテゴリや投稿・固定ページなど、予め分岐条件が設定されています。
この分岐条件を組み合わせることでアドセンスの出し分けを設定できます。
分岐条件は複数設定できますが、組み合わせすぎると思った通り動かなくなるので注意。

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

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

方法1でやっていることをプラグイン無しで行うという話です。
例えばスマートフォン以外ではアドセンスを表示したい場合、

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

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

方法3 投稿ページテンプレートで分岐する

これが一番楽かつ柔軟だと思います。
例えば「アドセンスあり、別の広告、どちらも無し」の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', ''); // アドセンス

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

ver2.1以降の場合は、例えば一番最初のH2だと、以下の記述を削除します。

 if( function_exists('dynamic_sidebar') === true ) {
 if( isset( $luxe['amp'] ) && is_active_sidebar('post-under-1-amp') === true ) {
 $amp_widget = thk_amp_dynamic_sidebar( 'post-under-1-amp' );
 if( !empty( $amp_widget ) ) echo $amp_widget;
 }
 elseif( !isset( $luxe['amp'] ) && is_active_sidebar('post-under-1') === true ) {
 dynamic_sidebar( 'post-under-1' );
 }
 }

dynamic_sidebarと記述されているのがウィジェットスペースのコードです。
他の表示したくないウィジェットスペースも同様に削除してください。

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

例えば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'] ) ) {
?>

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

完成

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

まとめ

解答者の写真
プラグインの利用は一見簡単なようで、分岐が増えてくると不安定になることも。
インクルードもカテゴリごとくらいならいいけど、記事ごととなるとファイルへの記述が面倒だと思う。
よってお薦めは投稿テンプレートによる分岐。
面倒なのは最初だけだしね。
他にも応用効くから覚えておいて損はないわよ。