こんにちわ。めんどくさい全1のナコ(@nako_x)です。
皆さん、記事内の広告タグってどうやって貼っていますか?
テンプレートでも記事上、下はフォローしてくれているものが多いですが、効果の高いといわれている記事内はプラグインに頼るか自力でタグを挿入するかしかありません。
そのめんどくさいを解決する方法を紹介します!
プラグイン無し[function.php]
でカスタマイズします。
収益を上げペナルティを下げるベストな位置
広告の配置についてこのイラストをみてください。
これは効果が高くGoogleAdsense(グーグルアドセンス)のルールも守りよしとされている広告配置の形です。
ファーストビューに広告があってはならないというGoogleAdsense(グーグルアドセンス)ルールもまもりつつ、いい感じに配置するにはこの布陣がベストです。
しかしこの配置を実践しようとしたらどうしても手入力で記事を書く度にタグを挟んであげる必要があります。
使っているテーマでは記事の上か下しかフォローしてないしこれがめんどくてめんどくて・・
と発狂寸前でした。
とっても面倒だったので
2,記事投稿ページで自動挿入するかしないか選択可能
3,タイトル(H2)が3つ以上の時だけ真ん中に広告が挿入される
function.php
に以下のタグを貼り付けるだけでいけます〜1分で実装できますよ(^o^)
最初のh2,真ん中のh2,記事最後に広告を挿入する
以下のタグをfunction.php
の一番下に貼り付けてください。
※今回はアドセンスタグを抜き出して判別をかけています。
function内で広告挿入のショートコードをアドセンスタグに変換処理をしている場合があるので一番下が安全です。
できれば子テーマ内のfunction.php
に追加してください!
//////////////////////////////////////////////////
//広告タグ自動挿入
//////////////////////////////////////////////////
// カスタムフィールドの追加
function add_custom_field() {
add_meta_box( 'custom-auto_add', '広告自動挿入', 'create_auto_add', 'post', 'side' );
}
function create_auto_add() {
$keyname = 'auto_add';
global $post;
// 保存されているカスタムフィールドの値を取得
$get_value = get_post_meta( $post->ID, $keyname, true );
// checkboxの値
$data = ['する', 'しない'];
// nonceの追加
wp_nonce_field( 'action-' . $keyname, 'nonce-' . $keyname );
// HTMLの出力
foreach( $data as $d ) {
$checked = '';
if( $d === $get_value ) $checked = ' checked';
echo '<label><input type="radio" name="' . $keyname . '" value="' . $d . '"' . $checked . '>' . $d . '</label>';
}
}
add_action( 'admin_menu', 'add_custom_field' );
// カスタムフィールドの保存
function save_custom_field( $post_id ) {
$custom_fields = ['auto_add'];
foreach( $custom_fields as $d ) {
if ( isset( $_POST['nonce-' . $d] ) && $_POST['nonce-' . $d] ) {
if( check_admin_referer( 'action-' . $d, 'nonce-' . $d ) ) {
if( isset( $_POST[$d] ) && $_POST[$d] ) {
update_post_meta( $post_id, $d, $_POST[$d] );
} else {
delete_post_meta( $post_id, $d, get_post_meta( $post_id, $d, true ) );
}
}
}
}
}
add_action( 'save_post', 'save_custom_field' );
function ad_before_h2($content) {
//広告を自動挿入する
$ad = <<< EOF
★★★★★★★★★★ 広告が入ります ★★★★★★★★★★
EOF;
if ( is_single() ) {//投稿ページ
$h2 = '/^<h2.*?>.+?<\/h2>$/im';
$adsbygoogle = "adsbygoogle";//adsenseタグがある場合の判別
global $post;
$add_flag = get_post_meta(get_the_ID(), 'auto_add', true);//自動広告カスタムフィールドの値を取得
if($add_flag === "する") {//自動広告する場合
if(strpos($content,$adsbygoogle) == false){//adsenseタグがある場合の判別
if ( preg_match_all( $h2, $content, $h2s )) {//h2タグの検索
if ( $h2s[0] ) {
if ( $h2s[0][0] ) {//1番目のH2見出し手前に広告を挿入
$content = str_replace($h2s[0][0], $ad.$h2s[0][0], $content);
}
$h2_count = count($h2s[0]); //h2の数をカウント
if ( $h2_count > 2 ) { //h2の数が0以上の場合
$h2_count = $h2_count / 2;
if ( $h2s[0][$h2_count] ) {//真ん中のH2見出し手前に広告を挿入
$content = str_replace($h2s[0][$h2_count], $ad.$h2s[0][$h2_count], $content);
}
}
$content = $content.$ad;//最後に広告を挿入
}
}
}
}
}
return $content;
}
add_filter('the_content','ad_before_h2');
★★★★★★★★★★ 広告が入ります ★★★★★★★★★★
のところにアドセンスのタグを追加してください!
やってることは以下になります。
1,元々広告タグ(グーグルアドセンス)が入っている記事には自動挿入しない
アドセンス独自のタグが記事内にあるか判別してタグが見つかった場合は処理をしないようになっています。
2,記事投稿ページで自動挿入するかしないか選択可能
管理画面の記事投稿ページにカスタムフィールド「広告自動挿入」が表示されます。
ラジオボタンを「する」とした場合のみ表示されます。
3,タイトル(H2)が3つ以上の時だけ真ん中に広告が挿入される
あまりタイトルが少ない場合は最初のh2上、記事の最後の2箇所のみ自動挿入されます。
もっと沢山広告貼りたい…!
上の方法は3箇所ですがもっと沢山広告貼りたい…!って方にも対応する方法も一緒に紹介します。
function.php
にの該当箇所に追加してみてください。
if ( $h2s[0][0] ) {//1番目のH2見出し手前に広告を挿入
$content = str_replace($h2s[0][0], $ad.$h2s[0][0], $content);
}
if ( $h2s[0][3] ) {//3番目のH2見出し手前に広告を挿入
$content = str_replace($h2s[0][3], $ad.$h2s[0][3], $content);
}
if ( $h2s[0][6] ) {//6番目のH2見出し手前に広告を挿入
$content = str_replace($h2s[0][6], $ad.$h2s[0][6], $content);
}
タグ内の【1番目のH2見出し手前に広告を挿入】部分をカスタマイズすることで何個目のh2に表示するか変更ができます。
また数も増やすことができます。
まとめ
これで広告位置を気にせず記事の随筆に集中できますよ!
うほうほ