[Ha-Basic] Fixed text (advertising etc.) can be inserted before the H2 tag in the post / fixed page text

【ha-Basic】投稿・固定ページ本文のH2タグ前に定型文(広告など)を挿入できるようにしました

公開日:2019年5月17日 制作備忘録
Knowledge Base Wordpress ha-Basic テーマ
☆☆ この機能は【ha-Basic】テーマ バージョン1.1で実装(対応)済みです ☆☆
どーも、コピペプログラマー?のひまあーとです。

何かをテーマ内で追加するのはこの辺までにしよーと思いつつ、また追加してしまいました(笑)。

でもやっぱり有用な機能は追加したい・・で今回はH2タグの直前に定型文や広告を挿入する機能です。

といっても冒頭に書いた通りコピペプログラマーですから、勝手に師と仰ぐ「Simplicity2」テーマ作者さんのブログからの引用です。

単純にコピペしただけじゃないですよ(笑)。ちゃんと【ha-Basic】テーマで動作するように調整はきちんとしていますから。

それでは今回の変更について備忘録も兼ねて紹介しておきますね。

投稿や固定ページの本文内H2タグに定型コンテンツを挿入する機能

既に【ha-Basic】を使用している方向けになります(2019年5月17日現在一件もダウンロードがないので皆さん最新だと思います)。

変更したテーマファイル、追加したテーマファイル

変更したのは「functions.php」、追加したのは「a-before-h2ad.php」です。

上の参考記事ではfunctions.phpへ直接書くためのコードが紹介されていますが、設定する定型文や広告などのコードを書き入れなければならないこと、functions.phpが長くなってしまうことから別ファイルにしてそれをfunctions.phpで読み込むという形にしました。

functions.phpへ追加したのは「a-before-h2ad.php」を読み込みなさいよ!という記述だけ

//h2タグ前コンテンツ
include ‘a-before-h2ad.php’;// h2タグ(1~3番目)の前に何かを挿入する
コメント含めたった2行です。これだけで外部のファイルをfunctions.php内に書いたのと同じ働きにすることができます。

「a-before-h2ad.php」の内容は以下の通り

<?php
function add_ad_before_h2_for_3times($the_content) {
//1つ目の広告タグを挿入
$ad1 = <<< EOF
<?php //この行の下に広告コードなどを挿入?>
EOF;
//2つ目の広告タグを挿入
$ad2 = <<< EOF
<?php //この行の下に広告コードなどを挿入?>
EOF;
//3つ目の広告タグを挿入
$ad3 = <<< EOF
<?php //この行の下に広告コードなどを挿入?>
EOF;
  if ( is_single() || is_page() ) {//投稿ページ
    $h2 = '/^<h2.*?>.+?<\/h2>$/im';//H2見出しのパターン
    if ( preg_match_all( $h2, $the_content, $h2s )) {//H2見出しが本文中にあるかどうか
      if ( $h2s[0] ) {//チェックは不要と思うけど一応
        if ( $h2s[0][0] ) {//1番目のH2見出し手前に広告を挿入
          $the_content  = str_replace($h2s[0][0], $ad1.$h2s[0][0], $the_content);
        }
        if ( $h2s[0][1] ) {//2番目のH2見出し手前に広告を挿入
          $the_content  = str_replace($h2s[0][1], $ad2.$h2s[0][1], $the_content);
        }
        if ( $h2s[0][2] ) {//3番目のH2見出し手前に広告を挿入
          $the_content  = str_replace($h2s[0][2], $ad3.$h2s[0][2], $the_content);
        }
      }
    }
  }
  return $the_content;
}
add_filter('the_content','add_ad_before_h2_for_3times');
?>

ほぼそのまんまです(笑)。

紹介されているコードと違うのは、別ファイルなのできちんとphpの接頭辞と閉じ子は入れてあげること。それに伴って中間のコメントがそのまま表示されてしまうのできちんとコメントアウトしてあげたこと、そして、投稿だけでなく固定ページ(is_page())を追加したことです。

定形コンテンツの設定方法

テーマ編集から「a-before-h2ad.php」を開きます

冒頭部分にある

<?php
function add_ad_before_h2_for_3times($the_content) {
//1つ目の広告タグを挿入
$ad1 = <<< EOF
<?php //この行の下に広告コードなどを挿入?>
 
 
 
EOF;
//2つ目の広告タグを挿入
$ad2 = <<< EOF
<?php //この行の下に広告コードなどを挿入?>
 
 
 
EOF;
//3つ目の広告タグを挿入
$ad3 = <<< EOF
<?php //この行の下に広告コードなどを挿入?>
 
 
 
EOF;
の中にある
<?php //この行の下に広告コードなどを挿入?>
 
 
 
EOF;

の空白の中に定型文や広告コードを入れます。

3か所ありますが、上から1つ目のH2タグ前、2つ目のH2タグ前、3つ目のH2タグ前に挿入されるコンテンツになります。

※自動的に幅が調整される広告を除き、divタグなどで囲んで位置の調整をCSSでする必要がある場合があります
※文章などを入れる場合にはきちんとpタグなどを入れてhtmlとして出力される形にしないとうまく表示されません(特にWorpdressの場合pタグやspanタグなどを省いてもきちんと整形されるので、うっかり忘れることが多いです)

この機能が必要ないときは

上の定型文の設定部分に何も記入しなければ、見た目は何も表示されませんが、表示されないだけで、H2タグがあるのかないのか?定型文はあるか?という判断が発生しますから、特に機能が必要ない!という方はそもそも動作させないようにしても構いません。

やり方は簡単で、テーマ編集から「functions.php」を開き、25行目付近にある

//h2タグ前コンテンツ
include ‘a-before-h2ad.php’;// h2タグ(1~3番目)の前に何かを挿入する
の2行を削除するだけです。

※これで読み込まれなくなりますので、「a-before-h2ad.php」というファイルを削除する必要はありません。

アドセンスの広告ユニットを挿入する場合の注意事項

アドセンスの広告ユニットには自身で設定する「ディスプレイ広告」や「テキスト広告」があります。これは旧来からある広告コンテンツで、規約によるとこれらの広告ユニットの上には「スポンサー広告」などの文字を表示することとなっていますので、アドセンスの規約に従って広告設置をするようにしてください。

また、今回の機能は単純にH2タグの前に何かを挿入するものですから、本文の内容によっては広告と広告の間が近くなりすぎて警告を受けることもあるかもしれませんので、自身で書く記事の内容量を把握して過度に広告が挿入されないように注意してください。

【ha-Basic】構造化データがきちんと出力されるようにしました

【ha-Basic】テーマを「Theme Check」プラグインでチェックし、修正すべき点を直しました

【ha-Basic】OGPタグの出力方法見直し


おまけ h2タグの前ではなくimgタグ(画像)の後ろに広告を表示する方法

このままだとほぼコピー記事のようになってしまうので、アドセンスの自動広告を有効化した後結構な頻度で表示される、本文へ挿入した画像の下へ任意の広告を表示する方法を紹介しておきます。

何かの説明をするようなタイプのサイトと違ってブログ(日記)を主としたサイトではh2タグを使う機会が少ないと思いますので、そうしたサイトではこちらのコードの方が有効かと思います。

変更はテーマ編集から「a-before-h2ad.php」のコードを以下へ変更するだけです

<?php
function add_ad_before_h2_for_3times($the_content) {
//1つ目の広告タグを挿入
$ad1 = <<< EOF
EOF;
//2つ目の広告タグを挿入
$ad2 = <<< EOF
<?php //この行の下に広告コードなどを挿入?>
EOF;
//3つ目の広告タグを挿入
$ad3 = <<< EOF
<?php //この行の下に広告コードなどを挿入?>
EOF;
if ( is_single() || is_page() ) {//投稿ページ
		$h2 = '/<img.*?src\s*=\s*[\"|\'](.*?)[\"|\'].*?>/i';//画像タグのパターン
    if ( preg_match_all( $h2, $the_content, $h2s )) {//画像タグが本文中にあるかどうか
      if ( $h2s[0] ) {//チェックは不要と思うけど一応
		if ( $h2s[0][0] ) {//1番目の画像タグのうしろに広告を挿入
          $the_content  = str_replace($h2s[0][0], $h2s[0][0].$ad1, $the_content);
        }
        if ( $h2s[0][1] ) {//2番目の画像タグのうしろに広告を挿入
          $the_content  = str_replace($h2s[0][1], $h2s[0][1].$ad2, $the_content);
        }
        if ( $h2s[0][2] ) {//3番目の画像タグのうしろに広告を挿入
          $the_content  = str_replace($h2s[0][2], $h2s[0][2].$ad3, $the_content);
        }
      }
    }
  }
  return $the_content;
}
add_filter('the_content','add_ad_before_h2_for_3times');
?>
【注意】コードをコピーして使用する前に必ずお読みください

この記事内にコードが記載されている場合、コードはそのままコピー(いわゆるコピペ)してお使いいただいても構いませんが、以下の件にご留意ください。

使用については自己責任でお願いします

コードの確認は私の管理するサイト、またはテスト環境で問題が起こらなかったものですので、お使いの環境での動作等を保証するものではありません。

万が一このコードを使用してサイトに重篤なトラブルが生じても当サイト、当サイト管理者は一切責任を負いません

コードの変換エラーなどにより動作しない場合、更新エラーが出る場合があります

コードをそのままコピーしても問題なく使えるよう文字列変換を行った上で掲載しておりますが、希に変換できていない場合があり、コードエラーとなることがあります

その場合には以下の方法で修正を行ってみてください

  1. コードの中に全角の記号が入っていませんか?
  2. 半角にすることで解消できます
  3. コードの中に全角の空白(スペース)がありませんか?
  4. 半角にすることで解決できます
  5. コードは合っているはずなのに更新できないときは
  6. 特にエラーの出た行内に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があり、Wordpressのエディタチェックではこれを「’」や「)」など閉じ子のエラーとして認識され更新できないことがあります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。
  7. 「何かが間違っています...」と表示され、更新できないときは
  8. このエラーは本当に何がエラーなのかをWordpressのチェックが判断できない場合に発生します。解決策としてはその画面を開き直すことなのですが、その際希に元のコードがすべて削除されてしまう場合がありますので、今表示されているコードを一旦どこかへコピーしてからページの再読み込みをするようにしてやり直します。
    ※このエラーは不明なエラーなので予期せぬ動きをする可能性がありますので特に慎重な対処が必要です
これらのエラー対処については以下のページが参考になるかも知れません

コードを転載する場合には

ご自身のサイトで当ページで紹介しているコードを転載される場合には当ページへのリンクを入れていただきますようお願いいたします

ひまあーと(管理人)
  • 記事の作者: ひまあーと(管理人)

  • ☆最後までお読みいただきありがとうございました。記事作者のひまあーとです。
    ☆Wordpressでサイトをカスタマイズしていく上で有用な情報を配信しつつ、「ココナラ」でサイトカスタマイズのお手伝い、不具合の修復、サイト引っ越し代行などをさせていただいております。
    ☆Wordpressネタが多いですが、趣味の「園芸」「卓球」などの情報や日々の出来事などもどんどん増やしていきますのでよろしくお願いいたします。


いつでもご相談・サイトカスタマイズの依頼を受け付けています

Wordpressのカスタマイズ、不具合解消のご相談はすべてココナラのダイレクトメッセージからお受けしております。まずはこちらのバナーからお気軽にお問い合わせください。

※一度もココナラを使ったことがない方はココナラへの無料登録が必要です。こちらから登録後、上のリンクをクリックする、またはココナラトップページから「ひまあーと」を検索してお問い合わせください。


【スポンサーリンク】


記事の拡散にご協力をお願いします

閲覧いただきありがとうございました。役に立つ情報でしたら是非SNSでシェアをお願いします

関連情報