Функция, шорткод и виджет для вывода рекламы Google Adense из аккаунта автора поста

Функция, шорткод и виджет для вывода рекламы Google Adense из аккаунта автора поста | n-wp.ru

Функция, шорткод и виджет для вывода рекламы Google Adense из аккаунта автора поста

Блог сам по себе – интересное и полезное изобретение. Он призван делиться с посетителями своими мыслями, информацией. Он хорош, как площадка для общения. Но можно простой блог использовать и с большей пользой: он может приносить, хоть небольшой, но все же доход, причем не только владельцу, но и авторам. Одним из простейших способов извлечения дохода из блога является Google AdSense. Давайте создадим инструменты для размещения в блоге рекламы Google AdSense, и позволим авторам использовать рекламные блоки из своих аккаунтов, и тем самым зарабатывать с помощью своих публикаций.

Google разрешает рекламу от нескольких аккаунтов AdSense на разных страницах сайта, но нельзя размещать рекламу из более, чем одного аккаунта на странице. Поэтому будем размещать рекламу автора на странице с его записями, а нашу – на других. Удобнее всего брать у автора код рекламы из поля в профиле и вставлять его динамически. При этом автору дается возможность самому вставлять рекламу AdSense. Добавляетм в файл functions.php:

<?php
function tp_profile_adsense_show( $user ) {
    echo '

Your Google AdSense Ads


Вставьте сюда ваш код Google AdSense для блока 300x250.

Вставьте сюда ваш код Google AdSense для блока 468x60.
'; } add_action( 'show_user_profile', 'tp_profile_adsense_show' ); add_action( 'edit_user_profile', 'tp_profile_adsense_show' ); function tp_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', 'tp_profile_adsense_save' ); add_action( 'edit_user_profile_update', 'tp_profile_adsense_save' ); ?>

Создаем основную функцию. Она может работать самостоятельно, а также использоваться другими функциями. Добавляем в файл functions.php:

 '',
        '468x60'  => ''
    );
    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 != '' ) {
        return '
' . $ad_code . '
'; } else { return false; } } ?>

Итак, сначала определяем некоторые коды по умолчанию. Они будут отображаться на всех страницах, кроме страницы одиночной записи.

  • Проверяем, это – страница одиночной записи?
  • Если страница одиночной записи, мы выводим код рекламы из профиля автора и записываем его в переменную $ad_code. При этом также используется параметр $ad_type;
  • В случае, если это – не страница одиночной записи, присваиваем код переменной $ad_code по умолчанию.
  • Если переменная $ad_code не пустая, возвращаем значение false.

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

 '468x60'
    ), $atts ) );
    return tp_return_adsense( $ad_type );
}
add_shortcode( 'display_adsense', 'display_adsense_sc' );
?>

Он берет параметр ad_type и передает основной функции, возвращая результат. Если параметр не нужен, а достаточно результата, можно не использовать этот код, а просто вставить следующую строку в файл functions.php после кода основной функции:


Если мы хотим размещать рекламу после «n»-го абзаца каждой записи, вставляем в файл functions.php следующую функцию:

<?php
function tp_auto_insert_adsense( $post_content ) {
    if ( !is_single() ) return $post_content;
    $afterParagraph = 1; // после какого абзаца выводить рекламу
    $adsense = tp_return_adsense( '468x60' );
    preg_match_all( '/

/', $post_content, $matches, PREG_OFFSET_CAPTURE ); $insert_at = $matches[0][$afterParagraph - 1][1]; return substr( $post_content, 0, $insert_at) . $adsense . substr( $post_content, $insert_at, strlen( $post_content ) ); } add_filter( 'the_content', 'tp_auto_insert_adsense' ); ?>

Вы можете изменять значение переменной $afterParagraph, и тем самым определять, после какого абзаца в посте будет выводится рекламный блок Google AdSense.

Если вам удобно вставлять рекламу с помощью виджета, то создадим и его. Добавим в файл functions.php:

 'some+ AdSense Widget Settings' ) 
        );
    }

    public function form( $instance ) {
        if ( isset( $instance[ 'ad_type' ] ) ) {
            $ad_type = $instance[ 'ad_type' ];
        } else {
            $ad_type = '300x250';
        }
        ?>
        

<label for="get_field_id( 'ad_type' ); ?>">Ad Type <input class="widefat" id="get_field_id( 'ad_type' ); ?>" name="get_field_name( 'ad_type' ); ?>" type="text" value="" />

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

[info txt=”Функция автоматического вывода рекламного блока из аккаунта автора реализована в блоге n-wp.ru. Подробнее об этом.”]
Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*