Статьи

Сделать лучшее из Google AdSense в WordPress

Монетизация блогов не является обязательной, но это очень важный источник мотивации. Если вы ведете блог один или вместе с несколькими авторами, которых вы собрали, зарабатывание даже нескольких долларов в месяц может изменить ваш и / или подход ваших авторов к вашему блогу.

Поскольку Google AdSense является одним из самых простых и популярных способов монетизации блогов, мы увидим, как использовать его в блоге WordPress с несколькими авторами. (Хотя этот учебник также будет работать для отдельных блоггеров.) Мы расскажем, как настроить поля профиля для объявлений AdSense авторов и как отображать эти объявления с помощью функции, с помощью виджета, шорткода и автоматически внутри сообщений. ,


Google принимает объявления от нескольких издателей AdSense на одном веб-сайте, если вы не отображаете объявления от нескольких издателей на одной странице . Таким образом, мы собираемся показывать рекламу наших авторов на страницах их сообщений и показывать нашу собственную рекламу на других страницах.

Мы могли бы спросить каждого автора в нашем блоге об их блоках кода AdSense и вставить их вручную в наш код, но лучше было бы попросить их самим предоставить код и вставить их динамически. (К тому же, делать это вручную неинтересно.) Приведенный ниже код предоставляет нашим авторам возможность обновлять свои профили, вставляя свои собственные объявления AdSense:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
// show the textarea fields for authors’ to enter their AdSense ad codes
// source: http://www.stemlegal.com/greenhouse/2012/adding-custom-fields-to-user-profiles-in-wordpress/
function wptuts_profile_adsense_show( $user ) {
    echo ‘<h3>Your Google AdSense Ads</h3>
    <table class=»form-table»>
        <tr>
            <th><label for=»adsense_300x250″>AdSense Ad Code (300×250)</label></th>
            <td><textarea name=»adsense_300x250″ id=»adsense_300x250″ rows=»5″ cols=»30″>’ .
            <span class=»adsense_300x250″>Your Google AdSense JavaScript code for the 300×250 ad space.
        </tr>
        <tr>
            <th><label for=»adsense_468x60″>AdSense Ad Code (468×60)</label></th>
            <td><textarea name=»adsense_468x60″ id=»adsense_468x60″ rows=»5″ cols=»30″>’ .
            <span class=»adsense_468x60″>Your Google AdSense JavaScript code for the 468×60 ad space.
        </tr>
    </table>’;
}
add_action( ‘show_user_profile’, ‘wptuts_profile_adsense_show’ );
add_action( ‘edit_user_profile’, ‘wptuts_profile_adsense_show’ );
 
// save the changes above
function wptuts_profile_adsense_save( $user_id ) {
    if ( ! current_user_can( ‘edit_user’, $user_id ) )
        return false;
    update_user_meta( $user_id, ‘adsense_300x250’, $_POST[‘adsense_300x250’] );
    update_user_meta( $user_id, ‘adsense_468x60’, $_POST[‘adsense_468x60’] );
}
add_action( ‘personal_options_update’, ‘wptuts_profile_adsense_save’ );
add_action( ‘edit_user_profile_update’, ‘wptuts_profile_adsense_save’ );
?>

Вы можете дублировать строки таблицы, чтобы добавить больше типов объявлений, если хотите. Не забудьте изменить name s и другие параметры входов.


Теперь мы переходим к той части, где мы строим нашу основную функцию, которая будет использоваться как самостоятельно, так и другими функциями. Посмотрите на код ниже:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
// our main function to return the ad codes
// remember: other functions below use this function, too!
function wptuts_return_adsense( $ad_type = ‘468×60’ ) {
    // the default ad codes — don’t forget to change them!
    $default_ad_codes = array(
        ‘300×250’ => ‘<img src=»http://dummyimage.com/300×250″ />’,
        ‘468×60’ => ‘<img src=»http://dummyimage.com/480×60″ />’
    );
    if ( is_single() ) {
        global $post;
        $user_id = $post->post_author;
        $ad_code = get_user_meta( $user_id, ‘adsense_’ . $ad_type, true );
    } else {
        $ad_code = $default_ad_codes[$ad_type];
    }
    if ( $ad_code != » ) {
        // we’ll return the ad code within a div which has a class for the ad type, just in case
        return ‘<div class=»adsense_’ . $ad_type . ‘»>’ .
    } else {
        return false;
    }
}
?>

Вы видите, что это делает?

  1. Во-первых, мы определяем некоторые «рекламные коды по умолчанию», чтобы показывать их, кроме страниц публикации.
  2. Затем мы проверяем, является ли страница «страницей с одним сообщением».
  3. Если это одна страница поста, мы выбираем рекламные коды из профиля автора поста и определяем его в переменной $ad_code . Обратите внимание, что мы также используем параметр функции $ad_type .
  4. Если это не одна страница публикации, мы определяем переменную $ad_code с помощью рекламных кодов по умолчанию.
  5. И если переменная $ad_code не пуста, мы возвращаем рекламный код с $ad_code div окружающим его. (В противном случае мы возвращаем false .)

Выполнено! Вы можете использовать эту функцию в любом месте вашей темы сейчас — как внутри, так и снаружи The Loop.

Я люблю это, когда это так просто! 🙂

Помните: Google строго запрещает вам показывать объявления от нескольких издателей на одной странице. Вот почему основная функция (то есть другие функции) не будет отображать «рекламные коды по умолчанию», если автор не предоставил свои собственные коды в своем профиле. Если бы мы это сделали, мы бы точно были забанены в Google AdSense.

Если вы хотите, чтобы ваши авторы могли добавлять свои собственные объявления в любом месте своих постов, вы можете использовать короткий код, как показано ниже:

01
02
03
04
05
06
07
08
09
10
11
<?php
// shortcode for the above function
// usage: [display_adsense ad_type=»468×60″]
function display_adsense_sc( $atts ) {
    extract( shortcode_atts( array(
        ‘ad_type’ => ‘468×60’
    ), $atts ) );
    return wptuts_return_adsense( $ad_type );
}
add_shortcode( ‘display_adsense’, ‘display_adsense_sc’ );
?>

Это даже проще, чем основная функция: он принимает параметр ad_type передает его через нашу основную функцию и возвращает функцию.

Если вы не хотите никаких параметров и просто возвращаете основную функцию, вам даже не нужен код выше! Просто добавьте эту строку после нашей основной функции:

1
2
3
4
<?php
// usage: [display_adsense]
add_shortcode( ‘display_adsense’, ‘wptuts_return_adsense’ );
?>

Единственный параметр нашей основной функции имеет значение по умолчанию ( '468x60' , в нашем примере), поэтому шорткод будет отображать только рекламу такого типа.


Вы можете не захотеть предоставлять своим авторам право показывать рекламу в некоторых случаях. Если вы решили вставить свои объявления автоматически, скажем, после первого абзаца каждого поста; нижеприведенная функция — именно то, что вы ищете:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<?php
// the function to insert the ads automatically after the «n»th paragraph in a post
// the following code is borrowed from Internoetics, then edited:
// http://www.internoetics.com/2010/02/08/adsense-code-within-content/
function wptuts_auto_insert_adsense( $post_content ) {
    if ( !is_single() ) return $post_content;
    $afterParagraph = 1;
    $adsense = wptuts_return_adsense( ‘468×60’ );
    preg_match_all( ‘/<\/p>/’, $post_content, $matches, PREG_OFFSET_CAPTURE );
    $insert_at = $matches[0][$afterParagraph — 1][1];
    return substr( $post_content, 0, $insert_at) .
}
add_filter( ‘the_content’, ‘wptuts_auto_insert_adsense’ );
?>

Если вы собираетесь загрузить плагин, который мы сейчас создаем (с кнопкой «Загрузить» в начале сообщения), не забывайте, что строка с add_filter() будет закомментирована. Раскомментируйте, чтобы включить эту функцию.


Создание виджетов может показаться сложным, но на самом деле их действительно легко сделать. В нашем случае мы просто повторим нашу основную функцию и позволим администраторам вашего блога установить для нее параметр по умолчанию:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
// the widget to display the ads on the sidebar
class Wptuts_AdSense_Widget extends WP_Widget {
    public function __construct() {
        parent::__construct(
            ‘wptuts_adsense_widget’, // base ID of the widget
            ‘Wptuts+ AdSense Widget’, // the name of the widget
            array( ‘description’ => ‘Wptuts+ AdSense Widget Settings’ ) // the description for the widget
        );
    }
 
    public function form( $instance ) {
        if ( isset( $instance[ ‘ad_type’ ] ) ) {
            $ad_type = $instance[ ‘ad_type’ ];
        } else {
            $ad_type = ‘300×250’;
        }
        ?>
        <p>
        <label for=»<?php echo $this->get_field_id( ‘ad_type’ ); ?>»>Ad Type</label>
        <input class=»widefat» id=»<?php echo $this->get_field_id( ‘ad_type’ ); ?>» name=»<?php echo $this->get_field_name( ‘ad_type’ ); ?>» type=»text» value=»<?php echo esc_attr( $ad_type ); ?>» />
        </p>
        <?php
    }
 
    public function update( $new_instance, $old_instance ) {
        $instance = array();
        $instance[ ‘ad_type’ ] = strip_tags( $new_instance[ ‘ad_type’ ] );
        return $instance;
    }
 
    public function widget( $args, $instance ) {
        echo wptuts_return_adsense( $instance[ ‘ad_type’ ] );
    }
 
}
 
function myplugin_register_widgets() {
    register_widget( ‘Wptuts_AdSense_Widget’ );
}
 
add_action( ‘widgets_init’, ‘myplugin_register_widgets’ );
?>

Виджет также имеет очень простую функцию: если это страница с одним постом, показывается объявление автора, а если нет — показ рекламы по умолчанию.


Если вы ведете блог с несколькими авторами, у которых нет капитала для оплаты их работы, эти приемы могут побудить их писать чаще. Они даже охотнее делятся и продвигают свои собственные сообщения — в конце концов, у них будут собственные объявления, отображаемые на страницах. Это и умно, и хорошо!

Есть ли у вас какие-либо идеи о монетизации блогов с несколькими авторами? Поделитесь своими комментариями ниже!