Монетизация блогов не является обязательной, но это очень важный источник мотивации. Если вы ведете блог один или вместе с несколькими авторами, которых вы собрали, зарабатывание даже нескольких долларов в месяц может изменить ваш и / или подход ваших авторов к вашему блогу.
Поскольку 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;
}
}
?>
|
Вы видите, что это делает?
- Во-первых, мы определяем некоторые «рекламные коды по умолчанию», чтобы показывать их, кроме страниц публикации.
- Затем мы проверяем, является ли страница «страницей с одним сообщением».
- Если это одна страница поста, мы выбираем рекламные коды из профиля автора поста и определяем его в переменной
$ad_code
. Обратите внимание, что мы также используем параметр функции$ad_type
. - Если это не одна страница публикации, мы определяем переменную
$ad_code
с помощью рекламных кодов по умолчанию. - И если переменная
$ad_code
не пуста, мы возвращаем рекламный код с$ad_code
div
окружающим его. (В противном случае мы возвращаемfalse
.)
Выполнено! Вы можете использовать эту функцию в любом месте вашей темы сейчас — как внутри, так и снаружи The Loop.
Я люблю это, когда это так просто! 🙂
Создание шорткода
Если вы хотите, чтобы ваши авторы могли добавлять свои собственные объявления в любом месте своих постов, вы можете использовать короткий код, как показано ниже:
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'
, в нашем примере), поэтому шорткод будет отображать только рекламу такого типа.
Автоматическая вставка рекламы после «n» -го абзаца
Вы можете не захотеть предоставлять своим авторам право показывать рекламу в некоторых случаях. Если вы решили вставить свои объявления автоматически, скажем, после первого абзаца каждого поста; нижеприведенная функция — именно то, что вы ищете:
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()
будет закомментирована. Раскомментируйте, чтобы включить эту функцию.
Создание виджета 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
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’ );
?>
|
Виджет также имеет очень простую функцию: если это страница с одним постом, показывается объявление автора, а если нет — показ рекламы по умолчанию.
Вывод
Если вы ведете блог с несколькими авторами, у которых нет капитала для оплаты их работы, эти приемы могут побудить их писать чаще. Они даже охотнее делятся и продвигают свои собственные сообщения — в конце концов, у них будут собственные объявления, отображаемые на страницах. Это и умно, и хорошо!
Есть ли у вас какие-либо идеи о монетизации блогов с несколькими авторами? Поделитесь своими комментариями ниже!