質問: 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ページ内に記事内広告を表示させるのか」 が今の疑問です。 説明が分かり辛かったり、不足している箇所もあるかと思います。 必要な情報あれば追加しますので、是非ご指摘ください。 ご教授のほど、よろしくお願いします。
回答: まず最初に... プラグインをアップデートした場合に変更箇所が元のコードに戻ったり、変更した内容の不備でセキュリティの問題が発生する場合もありますので、プラグインのソースコードを書き換えるのはおすすめしません。 基本的に 記載されている「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 のような不特定多数が閲覧するオープンな場所では、テーマを持っている人がいてもなかなか回答がつきにくい状況です。 そのため、どうしても自力でカスタマイズ対応できない場合は、「テーマ公式のフォーラムやサポートに問い合わせる」ことになると思います。 制作会社等では、持ち込みの有料テーマのカスタマイズを請け負っているところもあるので、その様な制作会社に依頼する方法もあります。(それなりに費用が必要になりますが...)