Simplicityの特徴 › フォーラム › テーマファイルのカスタマイズに関する質問など › 本文記事の複数のh2見出し前にAdsenseを表示したい
-
投稿者投稿
-
-
2017年9月1日 3:43 PM #55596ぴーちゃんゲスト
最近、Adsenseをはりつける数の制限は撤廃されて、コンテンツボリュームとのバランスをみながら各自の裁量ではりつけることができるようになりました。
現在はSimplicityの現行バージョンの広告ウィジェットを活用することで、見出しh2前に広告を表示することができるのですが、2番目のh2前、3番目のh2前・・・・にも広告を掲載したいのですが、ウィジェットの追加はどのようにすればよいでしょうか?本来ならばSimplicityのUIが素晴らしいので追加でウィジェット対応できれば嬉しいのですが、別スレではfunctions.phpにカスタマイズで対応することで実現できることも知りました。
【過去スレ】
https://nelog.jp/add-ads-before-h2ただこの方向では、アドセンス規約違反にあたるアルコール等の記事で広告を表示したくない場合のトリガーをかけることができません。
すでにあるSimplicity広告ウィジェットの「広告除外」対象とした記事を判別して、functions.phpのカスタマイズの場合、広告表示できないようにすることは可能でしょうか?↓自力でウィジェットを追加するのに参考になるかと思ったのですがスキルのなさから実現できませんでした。
https://tashiteku.com/adsense-midashi/過去スレでも同じようなリクエストがあったのですが、改めて新規でリクエストをあげてみました。追加で対応できれば嬉しいのですが・・・
【ご参考】
https://azu3.com/h2-koukoku/
http://gadget-nail.com/tips/insert_adsence_before_h2/
https://petitnomado.com/adsense_point/ -
2017年9月1日 5:10 PM #55597ノッツゲスト
https://nelog.jp/add-ads-before-h2
の記事でも広告除外はできます。if ( is_single() ) {//投稿ページ
のところを
if ( is_single() && !is_single(array('記事ID','記事ID','記事ID')) ) {//投稿ページ
にすれば、広告は除外できると思います。
だだし、この方法だと、Simplicity広告ウィジェットの「広告除外」にチェックしても機能しないので、当然記事をアップする直前等に記事IDを追記する手間があります。
-
2017年9月1日 5:17 PM #55598ノッツゲスト
あ、記事IDのところは、広告を除外したい記事のIDを入力してくださいね。
1つの記事を除外したい場合は、これだけでOKです。
if ( is_single() && !is_single(array('記事ID')) ) {//投稿ページ
複数の記事を除外したいときは、コンマ(,)で増やしていってください。
-
2017年9月1日 7:25 PM #55608わいひらキーマスター
広告表示の設定を反映させるのであれば、条件分岐に以下の関数を付け加えると、Simplicity側で非表示と設定したものが反映された表示になるかと思います。
is_ads_visible()
実際にそのカスタマイズに対して試したわけではないのですが、おそらく。 -
2017年9月1日 7:38 PM #55611ノッツゲスト
おお。そちらの関数を条件分岐に付け加えたらいけました!!
‘if ( is_single() && is_ads_visible() ) {//投稿ページ’
https://nelog.jp/add-ads-before-h2
のコード使っていたので、助かりました_(._.)_
-
2017年9月1日 8:27 PM #55615ぴーちゃんゲスト
ノッツさん、わいひらさん
ありがとうございます!!!
思い切って書き込んでみてよかったです。^-^
早速教えていただいたコードを使ってカスタマイスしたいと思います!
助かりました!!! -
2017年9月1日 8:57 PM #55616ぴーちゃんゲスト
今試してみたところうまくいきました!
もう1点だけご質問なのですが、PCとモバイルで分ける場合はどのように記述すればよいでしょうか? -
2017年9月1日 9:21 PM #55617ノッツゲスト
モバイル判定関数is_mobile()を使えばいけると思います。
モバイルだけ広告を表示したい場合はこんな感じでいけるのでは。
if ( is_single() && is_ads_visible() && is_mobile() ) {//投稿ページ
僕の場合、PCとスマホ分けて広告を設定しています。こんな感じ↓
PC↓
function add_ad_before_h2_for_3times_pc($the_content) { //広告(AdSense)タグを記入 $ad = <<< EOF ////////////////////////// //ここにアドセンスを挿入// ////////////////////////// EOF; if ( is_single() && is_ads_visible() && !is_mobile() ) {//投稿ページ $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], $ad.$h2s[0][0], $the_content); } if ( $h2s[0][1] ) {//2番目のH2見出し手前に広告を挿入 $the_content = str_replace($h2s[0][1], $ad.$h2s[0][1], $the_content); } if ( $h2s[0][2] ) {//3番目のH2見出し手前に広告を挿入 $the_content = str_replace($h2s[0][2], $ad.$h2s[0][2], $the_content); } } } } return $the_content; } add_filter('the_content','add_ad_before_h2_for_3times_pc');
スマホ↓
function add_ad_before_h2_for_3times_sp($the_content ) { //広告(AdSense)タグを記入 $ad = <<< EOF ////////////////////////// //ここにアドセンスを挿入// ////////////////////////// EOF; if ( is_single() && is_ads_visible() && is_mobile() ) {//投稿ページ $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], $ad.$h2s[0][0], $the_content); } if ( $h2s[0][1] ) {//2番目のH2見出し手前に広告を挿入 $the_content = str_replace($h2s[0][1], $ad.$h2s[0][1], $the_content); } if ( $h2s[0][2] ) {//3番目のH2見出し手前に広告を挿入 $the_content = str_replace($h2s[0][2], $ad.$h2s[0][2], $the_content); } } } } return $the_content; } add_filter('the_content','add_ad_before_h2_for_3times_sp');
これでいけるかと。手元の自分のコード確認できていないので、違っていたらすみません。
-
2017年9月2日 12:00 PM #55624ぴーちゃんゲスト
ノッツさん
ありがとうございます。早速こちらのコードでやってみましたが、エラーがでてしまいました。
functions.phpにPC用のコードを追記したところばっちり広告が表示されました。
次にモバイル用のコードをその下に追記したのですが、画面がしろくなってしまいましたので
バックアップしておいた元ファイルに戻しました。PC用とモバイル用は並記してもOKでしょうか?
-
2017年9月2日 12:57 PM #55627ぴーちゃんゲスト
ただいま作業の過程で改行箇所がおかしかったためか、新規で上記コードをつなげて追記したところうまく表示されました!希望通りの表示になり、感謝いたします。
またラベル表示は必須ではないと思いますが、広告だとわかりやすくするために
<div align=”center”><div class=”label”>スポンサーリンク</div></div>
を追記しました。取り急ぎお礼まで。
-
2017年9月2日 3:32 PM #55631ノッツゲスト
エラーが出てしまったようですみません。
でも、上手くいったようでよかったです。PC用とモバイル用は並記してもOKでしょうか?
僕は並記して使っています。
関数名を変えているので、おそらく問題ないはずです。ちなみに、is_mobile()がtrueの場合(つまりスマホページの場合)ですが、カスタマイザーでAMPを有効にしているときは、AMPページにも広告が表示される気がしたので、注意してください。
AMPページで広告を表示したくない場合は、AMP判定関数のis_amp()を使って対処して頂けたらと思います。 -
2017年9月2日 3:42 PM #55632ぴーちゃんゲスト
ノッツさん
いろいろアドバイスありがとうございます。
AMP化はまだ手付かずでしたので、AMP化する際は注意するようにします。
Simplicityを使っているとほとんどカスタマイズする必要もないのですが、今回の広告数制限撤廃を受けて効果測定をしてみたかったので助かりました。 -
2017年9月2日 5:46 PM #55642わいひらキーマスター
ノッツさん、コードまで書いていただいてありがとうございます!
同様のカスタマイズを行いたい方の助けになると思います。
-
-
投稿者投稿
- トピック「本文記事の複数のh2見出し前にAdsenseを表示したい」には新しい返信をつけることはできません。