Simplicityの本文中広告をダブルレクタングルにするカスタマイズ方法

カスタマイズのサポート掲示板のトピック「記事中広告を並列表示化」に以下の質問いただきました。

こちらのカスタマイズ記事を拝見しましたが、記事中広告を1つから2つに並列するにはどこを修正すればよいででしょうか?

Simplicityは基本的に、1ページに広告が3つ表示されるように作成してあります。 まずは、記事下に2つは固定。 あとの1つは、...

今回は、本文中広告に、広告を2つ表示するためのカスタマイズを紹介したいと思います。

photo by joris

スポンサーリンク

カスタマイズの前に

とその前に、このカスタマイズは、Simplicity1.0.6 20140828を元にカスタマイズしています。

今後、バージョンアップにより仕様が変更されることがあるかもしれませんが、基本的にやることは同じだと思います。

あと、今回のカスタマイズは、子テーマを適用しているものとして説明しています。(親テーマをカスタマイズするのは個人的に非推奨なので、あと2方法書くとややこしくなるので)

子テーマを利用していない場合は、以下を参照して適用してください。

Simplicityの子テーマをインストールする方法

広告並列表示4テンプレートファイルの作成

まずは子テーマの中に、ad-in-body.phpというファイルを作成してください。

そしてその中に以下のコードをコピペして貼り付けてください。

<?php if ( is_ads_visible() ): //広告表示がオンのとき?>
  <!-- 文章下広告 -->
  <?php if (wp_is_mobile()) { //スマートフォンの場合?>
    <?php if ( is_active_sidebar( 'adsense-300' ) ) :  ?>
       <div class="ad-article-bottom ad-space">
        <div class="ad-label"><?php echo get_ads_label() ?></div>
        <div class="ad-mobile"><?php dynamic_sidebar('adsense-300');?></div>
      </div>
    <?php endif; ?>
  <?php } else { //パソコンの場合?>
    <?php if ( is_active_sidebar( 'adsense-336' ) ) :  ?>
       <div class="ad-article-bottom ad-space">
        <div class="ad-label"><?php echo get_ads_label() ?></div>
        <div class="ad-left ad-pc"><?php dynamic_sidebar('adsense-336');?></div>
        <div class="ad-right ad-pc">[広告タグ]</div>
        <div class="clear"></div>
      </div>
    <?php endif; ?>
  <?php } ?>
<?php endif; ?>

以下の部分の[広告タグ]部分に、アドセンス以外の広告タグを貼り付けてください。

<div class="ad-right ad-pc">[広告タグ]</div>

子テーマfunctions.phpの編集

あとは子テーマ内のfunctions.phpに以下を追記します。

//親テーマの本文中広告関数を動作させない
function remove_ads_before_1st_h2 () {
    remove_filter( 'the_content', 'add_ads_before_1st_h2' );
}
add_action( after_setup_theme, remove_ads_before_1st_h2 );

function add_ads_before_1st_h2x2($the_content) {
  if ( is_single() && is_ads_in_content() ) {
    //広告(AdSense)タグを記入
    ob_start();//バッファリング
    get_template_part('ad-in-body');//広告2つ用に作成したテンプレート
    $ads = ob_get_clean();
    $h2 = '/<h2.*?>/i';//H2見出しのパターン
    if ( preg_match( $h2, $the_content, $h2s )) {//H2見出しが本文中にあるかどうか
      $the_content = preg_replace($h2, $ads.$h2s[0], $the_content, 1);//最初のH2を置換
    }
  }
  return $the_content;
}
add_filter('the_content','add_ads_before_1st_h2x2');

remove_ads_before_1st_h2()で親テーマの広告挿入関数を取り除いています。

そのあと、add_ads_before_1st_h2x2()で新たな本文中広告挿入関数を加えています。

広告挿入関数では、先程作成したad-in-body.phpテンプレートを呼び出しています。

get_template_part('ad-in-body');//広告2つ用に作成したテンプレート

動作確認

レクタングル大(336×280px)の広告を適当に挿入して動作を確認してみるとこのようになります。

H2手前に広告タグを挿入

H2見出し手前に広告が表示されるようになりました。

GitHubリポジトリ

不具合等ありましたらGitHubに、ご連絡いただけると幸いです。

yhira/simplicity2

スポンサーリンク
アドセンス(大)
アドセンス(大)

フォローする

スポンサーリンク
アドセンス(大)

コメント

  1. […] Simplicityテーマを使用している場合は、元からこの機能がカスタマイズから選べるように備わっています。ですので、この方法を行うと関数名が衝突してエラーが出ます。エラーを回避して子テーマから更なるカスタマイズをする場合は、Simplicityの本文中広告をダブルレクタングルにするカスタマイズ方法を参照してください。 […]

  2. Simplicityにおける広告表示をカスタマイズした話 | Jolly-Life.Net より:

    […] 参考ページ:http://wp-simplicity.com/ads-in-body-custum/ 参考ページ:http://wp-simplicity.com/adsense-to-other-ad/ […]