質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.49%

wordpressで「AMP」プラグインで作成したAMPページに、記事内広告を埋め込みたい

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 638

score 19

前提・実現したいこと

ワードプレス素人です。

・WPで「stork」というテーマを使い、ブログサイトを運営しています。
・「AMP」というプラグインを使い、AMPページが自動で作成されるようにしました。
・AMPでは無い通常のページでは、storkフォルダ内のfunction.phpに「pタグn個置きに記事内広告を設置する」というコードを書き、記事内広告が表示されるようにしています。
・しかしAMPプラグインで生成されたページでは、その記事内広告が表示されません。

〇相談内容
AMPページの場合、「本文(the_content)の中に変更を加える命令」をどこに記載するのでしょうか?
最終的には、「本文中のpタグn個おきに広告を設置」を実現したいと思っております。

〇バージョンなど
WordPress 4.8.9
使用テーマ:stork
関連プラグイン:AMP
使用サーバー:Mixhost
php 7.2

試したこと

まず、「AMPでは無い通常のページでの記事内広告」は以下のソースを使って表示されるようにしています。

function add_ad_before_p($the_content) {
//広告(AdSense)タグを記入
$ad = <<< EOF
<!-- adsense記事内広告をここに入れる -->
&nbsp;
EOF;
if ( is_single() ) {//投稿ページ
 $ptag = '/^<p>.+?<\/p>$/im';
 if ( preg_match_all( $ptag, $the_content, $ptags )) {
 if ( $ptags[0] ) {//チェックは不要と思うけど一応
 if ( $ptags[0][0] ) {
 }
 if ( $ptags[0][6] ) {
 $the_content = str_replace($ptags[0][6], $ad.$ptags[0][6], $the_content);
 }

 if ( $ptags[0][12] ) {
      $the_content = str_replace($ptags[0][12], $ad.$ptags[0][12], $the_content);
 }

 if ( $ptags[0][18] ) {
 $the_content = str_replace($ptags[0][18], $ad.$ptags[0][18], $the_content);
 }

 if ( $ptags[0][24] ) {
 $the_content = str_replace($ptags[0][24], $ad.$ptags[0][24], $the_content);
 }

 }
 }
 }
 return $the_content;
}

add_filter('the_content','add_ad_before_p');

※使用theme内のfunction.phpに記載
上記ソースは、他ブログ様で公開されていたものをコピーして少しカスタマイズしたものです。
([0]内の数字が0,6,12...と増えていますが、6の倍数で、本当は100以上まで用意して使っています。説明しづらいですが、本ソースは長すぎるので、上記ソースは省略しています。)

そして、個人的に怪しいなと思った
\wp-content\plugins\amp\includes\admin\functions.php
内に、上記のコードをそのままコピペしてみました。

しかし結果はAMPページのみエラーで、画面が真っ白になりました。(通常ページは表示された)

ダメモトでのトライでしたが、だめでした。

その他は、さすがに無知のままぶつかり続けるのは良くないと思い、控えました。

「AMPプラグインでAMPページを表示させた場合、どのようにしてAMPページ内に記事内広告を表示させるのか」
が今の疑問です。

説明が分かり辛かったり、不足している箇所もあるかと思います。
必要な情報あれば追加しますので、是非ご指摘ください。

ご教授のほど、よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

まず最初に...

プラグインをアップデートした場合に変更箇所が元のコードに戻ったり、変更した内容の不備でセキュリティの問題が発生する場合もありますので、プラグインのソースコードを書き換えるのはおすすめしません。


基本的に 記載されている「the_content フィルターフック」のコードの中で、 AMPページかどうかを判別して、Google AdSense のコードを出し分けることで対応できると思います。
(当然ですが、ヘッダで読み込む AdSense 関連スクリプトも AMP 用に変える必要があります。)


まず、Google AdSense は、「AMP ページ用」と「通常ページ用」でコードが異なりますので、AMP ページ用のコードも取得してください。(両方に表示するのであれば、通常・AMP両方のコードが必要です。)

AMP 用のコードについては、Accelerated Mobile Pages(AMP)について - AdSence ヘルプ に

AMP ページは AMP HTML で書かれているため、AMP 広告ユニットには通常の AdSense 広告コードとは異なる広告コードが必要です。詳しくは、AMP 対応広告ユニットの作成方法をご覧ください。

とあるように 通常の AdSense コードとは異なるので、AMP 対応広告ユニットの作成方法 - AdSence ヘルプ を参照して、作成・入手してください。


そして、WordPress の中で、現在の表示処理が「AMP ページ」か「それ以外」を判断して、それぞれの広告コードを出力するようにしてください。

AMP ページを判定する関数としては、AMP プラグインの場合、 is_amp_endpoint() が true を返すかどうかで判断できると思います。

以前、テストした感じでは、

WordPressでAMPページと通常ページを条件分岐する関数「is_amp_endpoint()」の使い方

の方法で、WordPress 標準テーマの場合は AMP 画面に AdSence 広告を表示することは可能でした。


「STORK」テーマは販売されているテーマで、ソースコードが公開されていないので、具体的にここを修正すればよいという指摘は難しいと思います。

また、有料テーマの場合、テーマ購入時の利用規約等で制限事項を設定している場合もありますので、teratail のような不特定多数が閲覧するオープンな場所では、テーマを持っている人がいてもなかなか回答がつきにくい状況です。

そのため、どうしても自力でカスタマイズ対応できない場合は、「テーマ公式のフォーラムやサポートに問い合わせる」ことになると思います。

制作会社等では、持ち込みの有料テーマのカスタマイズを請け負っているところもあるので、その様な制作会社に依頼する方法もあります。(それなりに費用が必要になりますが...)

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2021/02/16 04:33

    遅くなり大変申し訳ございません。
    こちらを参考に、改めて学習、実践させて頂きます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る