2018年現在、Google Adsenseは文章を重要視しているということで、文字数が審査を通過する指標になっている可能性が多くの場所で指摘されています。
文字数が極端に少ないページにアドセンスコードを入れると審査が通らなくなる可能性があるので、そのような記事を判別することにしました。
本来は投稿ボタンを押した時点でその情報をカスタムフィールドなどに保存するのが一番だと思うのですが、やり方がわからないので効率はわるそうですが違う方法を取ります。
まず、「wordpressで記事の文字数をカウントする」(外部サイト)の記事から、記事の文字数をカウントするコードをいただきます(元コードは目的が表示なので、取得用関数にechoが入っているので、その辺りを全部とります)。
そして、functions_affiliate.phpというファイルを作成します。この中に、
<?php //参考URL https://unskilled.site/wordpressdekijinomojisuu/ //指定した本文の文字数をカウントする function word_counter($text){ preg_match_all( "/<[a-zA-Z0-9\s=':;,{}#$%&@~<>\"\!\?\|\/\._\-\( \)\\\[\]]+>/" , $text , $match ); for( $i=0; $i < count( $match[0] ); $i++ ){ $removal_all = $removal_all + mb_strlen( $match[0][$i] , "UTF-8" ); } $content_text = mb_strlen( $text , "UTF-8" ) - $removal_all; return $content_text; } ?>
と、文字数をカウントする関数を入れます。
さらにfunctions.phpの中に、
require_once dirname( __FILE__ ) . '/functions_affiliate.php';
と入れます。
これは私がfunctions.phpが長くなると読みにくいからこうしているだけで、functions.phpに書いても良いですし、もっと良い方法があるのかもしれません。
最後にheader.phpの中に、
<?php //Google Adsenseを表示する条件 if( !is_404() ) { $gads = true; if( is_single() ){ global $post; $text = $post->post_content; $postcount = word_counter($text); if( $postcount < 500 ){ $gads = false; } } echo '<!-- this post is '. $postcount .' characters -->'; if( $gads==true ){ ?> <!-- ここに google adsense の審査用コードを入れる--> <?php } } ?>
と、指定した文字数以上の時だけ審査用コードを出力するようにします。