Google AdSense 是Google公司推出的一款面向广大站长的免费产品,通过在申请和绑定Adsense系统,获取广告代码并添加到网站,可以在上面展示广告,让站长实现创收。
Google Adsense有个非常厉害的功能,自动广告,只需要加入一段js,谷歌就会使用机器分析你的网站结构,然后给你自动放广告。
自动广告虽然好,不过因为它还不够智能,经常会出现打乱网站结构的情况发生,而且很多时候自动广告不一定会在你的文章中投放广告。
今天介绍一种通过WordPress钩子,动态判断文章段落数量来实现自动投放广告的方法。
(此方法可以用于其他类型广告的投放)
创建文章中广告单元
首先在Google AdSense 中创建文章内嵌广告单元,建议对每一个创建的广告单元都对其重命名来进行标记方便我们查看相应的数据报告。
插入代码到function.php
将如下代码内容插入到当前主题目录下的function.php文件内
- add_filter( 'the_content', 'prefix_insert_post_ads' );
- function prefix_insert_post_ads($content){
- $pattern = '/<p>.*?<\/p>/';
- preg_match_all($pattern,$content,$jg); //计算文章的段落数量
- $paragraph_count=count($jg[0]);
- if($paragraph_count >= 4 && is_single()){//如果文章的段落数量少于4段,则不会插入文章段落广告
- $paragraph_count -=2;
- $insert_paragraph=rand(3,$paragraph_count);
- $ad_code = '
- <div>广告代码</div>
- ';
- return prefix_insert_after_paragraph( $ad_code, $insert_paragraph, $content );
- }
- return $content;
- }
- // 插入广告所需的功能代码
- function prefix_insert_after_paragraph( $insertion, $paragraph_id, $content ) {
- $closing_p = '</p>';
- $paragraphs = explode( $closing_p, $content );
- foreach ($paragraphs as $index => $paragraph) {
- if ( trim( $paragraph ) ) {
- $paragraphs[$index] .= $closing_p;
- }
- if ( $paragraph_id == $index + 1 ) {
- $paragraphs[$index] .= $insertion;
- }
- }
- return implode( '', $paragraphs );
- }
代码会对文章长度的判断,以此作为依据来决定是否展示广告。
只需注意修改以下代码:
- if($paragraph_count >= 4 && is_single()){//如果文章的段落数量少于4段,则不会插入文章段落广告
默认是按4个段落来判断是否插入广告,这个地方根据自己的实际需要进行参数的修改
再来一个代码,删除了一个参数,效果一样:
- add_filter( 'the_content', 'prefix_insert_post_ads' );
- function prefix_insert_post_ads($content){
- $pattern = "/.*?<\/p>/";
- $paragraph_count = preg_match_all($pattern,$content); //计算文章的段落数量
- if($paragraph_count >= 4 && is_single()){//如果文章的段落数量少于4段,则不会插入文章段落广告
- $paragraph_count -=2;
- $insert_paragraph=rand(3,$paragraph_count);
- $ad_code = '
- <div>广告代码</div>
- ';
- return prefix_insert_after_paragraph( $ad_code, $insert_paragraph, $content );
- }
- return $content;
- }
- // 插入广告所需的功能代码
- function prefix_insert_after_paragraph( $insertion, $paragraph_id, $content ) {
- $closing_p = '</p>';
- $paragraphs = explode( $closing_p, $content );
- foreach ($paragraphs as $index => $paragraph) {
- if ( trim( $paragraph ) ) {
- $paragraphs[$index] .= $closing_p;
- }
- if ( $paragraph_id == $index + 1 ) {
- $paragraphs[$index] .= $insertion;
- }
- }
- return implode( '', $paragraphs );
- }