Більше результатів...

Загальні селектори
Тільки точні збіги
Шукати у заголовках
Шукати у контенті
Вибір типів постів
Фільтрувати за категоріями
FAQ
Hostenko
Натхнення
Відео уроки
Новини
Плагіни
Теми
Уроки
Хакі

Монетизація блогу — не обов'язкове, але досить вагоме джерело мотивації. Чи ведете ви блог поодинці або з авторами, яких ви зібрали, навіть кілька доларів на місяць може змінити ваше (та їхнє) ставлення до блогу.

Оскільки Google AdSense — один із найпростіших та найпопулярніших способів монетизації блогу, ми розглянемо, як його використовувати в WordPress блозі з кількома авторами (хоча це керівництво також спрацює для блогерів-одинаків). Ми розглянемо, як встановити поля у профілі для авторської реклами AdSense, як додавати цю рекламу за допомогою функції, віджету, шорткоду та автоматично.

inet.ws - Powerful VPS Hosting в США, Canada, UK та DE!

| Завантажити вихідні |

Розминка: встановлення полів профілю для авторської реклами

Google дозволяє рекламу від кількох AdSense облікових записів на одному сайті, якщо ви не відображаєте рекламу від різних облікових записів на одній сторінці. Отже, ми будемо відображати рекламу авторів на сторінках їх записів та відображати нашу власну рекламу на інших сторінках.

Ми можемо взяти у кожного автора блогу його блоки AdSense і вставити їх вручну в код, але краще просити їх надати код і вставляти його динамічно. Плюс не доведеться робити щось вручну. Код нижче надає нашим авторам можливість оновити їх профілі та вставити рекламу AdSense.

<?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 (300x250)</label></th>
            <td><textarea name="adsense_300x250" id="adsense_300x250" rows="5" cols="30">' . get_user_meta( $user->ID, 'adsense_300x250', true) . '</textarea><br>
            <span class="adsense_300x250">Your Google AdSense JavaScript code for the 300x250 ad space.</span></td>
        </tr>
        <tr>
            <th><label for="adsense_468x60">AdSense Ad Code (468x60)</label></th>
            <td><textarea name="adsense_468x60" id="adsense_468x60" rows="5" cols="30">' . get_user_meta( $user->ID, 'adsense_468x60', true) . '</textarea><br>
            <span class="adsense_468x60">Your Google AdSense JavaScript code for the 468x60 ad space.</span></td>
        </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' );
?>

Ви можете розмножити рядки таблиці та додати більше типів реклами, якщо захочете. Тільки не забудьте змінити ім'я та інші параметри.

Створюємо основну функцію

Тепер ми переходимо до створення нашої основної функції, яка використовуватиметься сама по собі, а також буде використана іншими функціями. Ось код:

<?php
// our main function to return the ad codes
// remember: other functions below use this function, too!
function wptuts_return_adsense( $ad_type = '468x60' ) {
    // the default ad codes - don't forget to change them!
    $default_ad_codes = array(
        '300x250' => '<img src="http://dummyimage.com/300x250" />',
        '468x60'  => '<img src="http://dummyimage.com/480x60" />'
    );
    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 . '">' . $ad_code . '</div>';
    } else {
        return false;
    }
}
?>

Бачите, що він робить?

  1. Спочатку ми визначаємо деякі коди реклами за промовчанням, які відображатимуться на сторінках без записів.
  2. Потім ми перевіряємо, чи сторінка одного запису.
  3. Якщо це сторінка одного запису, ми витягуємо код реклами з профілю автора та присвоюємо його змінній $ad_code. Зверніть увагу, що ми також використовуємо параметр $ad_type.
  4. Якщо це НЕ сторінка одного запису, ми привласнюємо змінною $ad_code наш код за замовчуванням.
  5. Якщо змінна $ad_code не порожня, ми повертаємо код оголошення в обрамленні DIV (інакше повертаємо false).

Готово! Ви можете використовувати цю функцію будь-де в темі — і всередині, і поза циклом.

Мені подобається коли все так просто!

Запам'ятайте: Google суворо забороняє розміщувати рекламу від різних облікових записів на одній сторінці. Тому основна функція (і, отже, інші функції) не відображатимуть код за промовчанням, якщо автор не надав свої коди у профілі. Якщо ми це зробимо, ми швидше за все будемо забанені Google AdSense.

Створення шорткоду

Якщо ви хочете дати авторам свободу в додаванні своєї реклами будь-де в записі, ви можете використовувати шорткод такого плану:

<?php
// shortcode for the above function
// usage: [display_adsense ad_type="468x60"]
function display_adsense_sc( $atts ) {
    extract( shortcode_atts( array(
        'ad_type' => '468x60'
    ), $atts ) );
    return wptuts_return_adsense( $ad_type );
}
add_shortcode( 'display_adsense', 'display_adsense_sc' );
?>

Це навіть простіше за основну функцію: він бере параметр тип_оголошення, передає його нашої основної функції та повертає результат.

Якщо ви не бажаєте використовувати параметри і просто повертати основну функцію, вам навіть не потрібен код, наведений вище. Просто додайте цей рядок після основної функції:

<?php
// usage: [display_adsense]
add_shortcode( 'display_adsense', 'wptuts_return_adsense' );
?>

Єдиний параметр нашої основної функції має значення за умовчанням (у прикладі це '468x60'), так що шорткод відображатиме лише таку рекламу.

Автоматична вставка реклами після "n" абзацу

Можливо, ви не захочете надавати своїм авторам свободу розміщення реклами. Якщо ви вирішите вставляти вашу рекламу автоматично, наприклад після першого абзацу кожного запису, вам потрібна ось ця функція:

<?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; // display after the "n"th paragraph
    $adsense = wptuts_return_adsense( '468x60' );
    preg_match_all( '/</p>/', $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', 'wptuts_auto_insert_adsense' );
?>

Якщо ви хочете завантажити плагін, який ми зараз створюємо, не забудьте, що рядок з функцією add_filter () буде закоментовано. Розкоментуйте її, щоб увімкнути роботу.

Створення віджету AdSense

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

<?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 = '300x250';
        }
        ?>
        <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' );
?>

Віджет також має дуже просту функцію: якщо це сторінка одного запису — відображати рекламу автора, якщо ні — відображати стандартну рекламу.

Висновок

Якщо у вас є блог з кількома авторами без оплати їх роботи, ці штуки можуть мотивувати їх писати частіше. Вони можуть навіть більше рекламувати та ділитися своїми записами — зрештою, на сторінках відображатиметься їхня власна реклама. Це розумно та добре.

Чи є ідеї монетизації блогу з кількома авторами? Поділіться у коментарях!

Джерело: WP.tutsplus.com
inet.ws - Powerful VPS Hosting в США, Canada, UK та DE!
Олексій Шевченко
редактор wpcafe
Вивчає сайтобудування з 2008 року. Практикуючий вебмайстер, що спеціалізується на створенні сайтів WordPress. Задати питання Олексію можна на https://profiles.wordpress.org/wpthemeus/

Коментарі до запису: 0

Додати коментар або відгук