Рекламный блок после тега More в Wordpress без плагинов
11.03.2011 | ВебКак и многим пользователям Wordpress, мне давно хотелось автоматической вставки рекламного блока под тегом more в каждой записи.
Разумеется, существует множество плагинов для реализации этой возможности, но мне хотелось обойтись штатным функционалом Wordpress. После недолгих поисков, натолкнулся на этот вариант. Предлагается вставить этот код в файл functions.php, находящийся внутри используемой темы Wordpress:
add_filter('the_content', 'adsense_adder_at_more_tag');
function adsense_adder_at_more_tag($text) {
if( is_single() ) :
$ads_text = '<span class="adsense">
<script type="text/javascript"><!--
google_ad_client = "pub-0123412341234123";
/* personal_development */
google_ad_slot = "1234512345";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</span>';
$pos1 = strpos($text, '<span id="more-');
$pos2 = strpos($text, '</span>', $pos1);
$text1 = substr($text, 0, $pos2);
$text2 = substr($text, $pos2);
$text = $text1 . $ads_text . $text2;
endif;
return $text;
}
Предложенный код вполне работоспособен, но имеет одну неприятную особенность — он вставляет рекламный блок внутрь элемента <span id="more-">, что не есть хорошо.
Поковырявшись, я доделал код так, чтобы рекламный блок вставлялся автоматически после <more>, перед следующим переносом строки. Вот моя версия:
add_filter('the_content', 'advert_after_more_tag');
function advert_after_more_tag($text) {
if (is_single()) {
$ads = <<<ADS
код вашего рекламного блока AdSense, РСЯ и т.д.
ADS;
$pos = strpos($text, "\n", strpos($text, "<span id=\"more-", 0));
$text1 = substr($text, 0, $pos);
$text2 = substr($text, $pos);
$text = $text1 . "\n" . $ads . "\n" . $text2;
}
return $text;
}
Юзайте.
Спасибо! Ваш код то и заработал!