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

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

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

235閲覧

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

nanigasi

総合スコア20

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/05/16 13:07

前提・実現したいこと

ワードプレス素人です。

・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ページ内に記事内広告を表示させるのか」
が今の疑問です。

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

まず最初に...

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


基本的に 記載されている「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 のような不特定多数が閲覧するオープンな場所では、テーマを持っている人がいてもなかなか回答がつきにくい状況です。

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

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

投稿2019/05/17 01:08

編集2019/05/17 01:19
CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nanigasi

2021/02/15 19:33

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問