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

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

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

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

PHP

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

Q&A

解決済

1回答

437閲覧

ワードプレスで、h2の見出しの偶数番目の前にアドセンスの広告を表示させたい

MayumiHanawa

総合スコア12

WordPress

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

PHP

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

0グッド

1クリップ

投稿2019/07/07 19:22

編集2019/07/08 00:00

ワードプレスのfunction.phpより、h2の見出しの偶数番目の前にアドセンスの広告を表示させたいと考えています。

現在は、(a*)のコードのように記載しており、できれば偶数番目を判別して、コードをスッキリさせたいのです。

if($number%2==0) {
偶数;}

のような判別を使用することは分かるのですが、具体的にどうコードを記載したらいいのか分かりません。

どなたかご教示いただけますでしょうか。

(a*)

function is_smartphone(){ $useragents = array( 'iPhone', // iPhone 'iPod', // iPod touch 'Android.*Mobile', // 1.5+ Android *** Only mobile 'Windows.*Phone', // *** Windows Phone 'dream', // Pre 1.5 Android 'CUPCAKE', // 1.5+ Android 'blackberry9500', // Storm 'blackberry9530', // Storm 'blackberry9520', // Storm v2 'blackberry9550', // Storm v2 'blackberry9800', // Torch 'webOS', // Palm Pre Experimental 'incognito', // Other iPhone browser 'webmate' // Other iPhone browser ); $pattern = '/'.implode('|', $useragents).'/i'; return preg_match($pattern, $_SERVER['HTTP_USER_AGENT']); } //1番目と4番目と6番目のh2見出し手前にアドセンスを表示 function add_ad_before_h2_for_3times($the_content) { //最初に表示させるアドセンス $ad0 = <<< EOF <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- First --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-5882880574861259" data-ad-slot="2714275289" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> EOF; //2番目に表示させるアドセンス $ad1 = <<< EOF <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- 坊主下部 --> <ins class="adsbygoogle" style="display:inline-block;width:336px;height:280px" data-ad-client="ca-pub-5882880574861259" data-ad-slot="9395757451"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> EOF; //3番目に表示させるアドセンス $ad2 = <<< EOF <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-5882880574861259" data-ad-slot="4782946216"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> EOF; //投稿ページ if ( is_single() ) { //H2見出しのパターン $h2 = '/^<h2.*?>.+?</h2>$/im'; //H2見出しが本文中にあるかどうか if ( preg_match_all( $h2, $the_content, $h2s )) { //チェックは不要と思うけど一応 if ( $h2s[0] ) { //1番目のH2見出し手前にad1を挿入 if ( $h2s[0][0] ) { if( is_smartphone() ){ $the_content = str_replace($h2s[0][0], $ad0.$h2s[0][0], $the_content); } else{ $the_content = str_replace($h2s[0][0], $ad0.$h2s[0][0], $the_content); } } //4番目のH2見出し手前にad2を挿入 if ( $h2s[0][3] ) { if( is_smartphone() ){ $the_content = str_replace($h2s[0][3], $ad2.$h2s[0][3], $the_content); } else{ $the_content = str_replace($h2s[0][3], $ad2.$h2s[0][3], $the_content); } } //6番目のH2見出し手前にad2を挿入 if ( $h2s[0][5] ) { if( is_smartphone() ){ $the_content = str_replace($h2s[0][5], $ad2.$h2s[0][5], $the_content); } else{ $the_content = str_replace($h2s[0][5], $ad2.$h2s[0][5], $the_content); } } } } } return $the_content; } add_filter('the_content','add_ad_before_h2_for_3times');

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

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

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

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

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

MayumiHanawa

2019/07/08 00:03

ご指摘ありがとうございます。 markdown等々修正いたしましたので、ご確認いただけますでしょうか。
退会済みユーザー

退会済みユーザー

2019/07/08 01:59

常に仕込んでおいて nth-child(2n) とか nth-child(2n+1) で表示制御する、とか?
guest

回答1

0

ベストアンサー

foreach で回してみてはいかがでしょうか。

php

1 2<?php 3if ( $h2s[0] ) { 4 foreach ( $h2s[0] as $index => $value ) { 5 if ( 0 === $index ) { // 1番目のH2見出し手前にad1を挿入. 6 if( is_smartphone() ) { 7 $the_content = str_replace( $value, $ad1 . $value, $the_content ); 8 } else { 9 $the_content = str_replace( $value, $ad1 . $value, $the_content ); 10 } 11 } elseif ( 1 === $index % 2 ) { // 偶数番目のH2見出し手前にad2を挿入. 12 if( is_smartphone() ) { 13 $the_content = str_replace( $value, $ad2 . $value, $the_content ); 14 } else { 15 $the_content = str_replace( $value, $ad2 . $value, $the_content ); 16 } 17 } 18 } 19}

投稿2019/07/09 12:19

YukiYamashina

総合スコア1011

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

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

MayumiHanawa

2019/08/03 23:03

返信が遅くなり大変申し訳ありません。 具体的にコードをご記載いただき、大変助かります。 こちらのコードでうまくいきました。 本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問