Как добавить рекламу в середину статьи на WordPress

Как добавить рекламу в середину статьи на WordPressНедавно я задалась вопросом, как бы поставить рекламу от Google в середине статьи. Но хорошего ответа в Интернете я не нашла. Поэтому пришлось поработать головой и я достаточно просто решила эту проблему. Вот пример ее реализации

Реклама в середине статьи

Шаблон сайта, который я привела в примере, сделан с помощью Artisteer, поэтому точные указания подойдут только для тех, у кого такая же структура. Остальным же придется немного подогнать под свой шаблон. Но надеюсь, что это не доставит Вам сложности. Просто нужно будет найти точное место, где нужно будет использовать предложенный мной код.
Итак, внимание, сам код:
Code
$content=art_get_content();
$kolsimcontent=mb_strlen($content,’UTF-8’);
if ($kolsimcontent>2000):
  $medium=$kolsimcontent/2;
  $pos=strpos($content,’.’,$medium)+1;
  $ad = art_get_option(‘art_ad_code_1’);
  if(!empty($ad)):
  $ad = ‘<div class=»ad alignright»>’.$ad.'</div>’;  
  endif;
  $content = substr($content,0,$pos).$ad. substr($content,$pos);
endif;

Теперь разберем код по полочкам, чтобы Вы смогли внести изменения под свой шаблон, а потом разберемся, куда же его вставлять.
Итак,
$content=art_get_content(); — в переменную $content мы получаем все содержание поста. Если Ваш шаблон не от Artisteer , то вместо функции art_get_content() нужно использовать просто get_the_content(). В последних версиях шаблонов от Artisteer используется функция theme_get_content(). Чтобы определиться, какая функция нужна именно Вам, можете попробовать посмотреть файл Функции темы (functions.php) , поискав там get и content.
Далее мы получаем количество символов в посте, указывая, что кодировка у нас UTF-8.
Ну а теперь мы проверяем сколько символов у нас в посте и выводим рекламу только, если их больше 2000. У Вас это число может быть другое, но вставить подобную проверку нужно обязательно. Так как если текст будет совсем маленький, наша реклама будет выглядеть очень неприглядно.
После того, как мы определили, что символов в посте больше, чем 2000, определяем середину
Code$medium=$kolsimcontent/2;
И чтобы не вставлять рекламу прямо посередине какого-либо слова, мы ищем позицию первой точки после середины:
Code$pos=strpos($content,’.’,$medium)+1;
Далее я взяла код рекламы.
Code $ad = art_get_option(‘art_ad_code_1’);
В разных шаблонах от Artisteer это может быть функция art_get_option или theme_get_option , а art_ad_code_1 — это рекламный код, который Вы вставите Theme Options — Ad code #1
В принципе, Вы можете вставить код рекламы и прямо тут:
Code$ad = ‘код рекламы’;
Только будьте внимательны. В скриптах часто встречаются кавычки. Они все должны быть двойные, так как одинарные в данном случае мы уже использовали.
Далее, если код рекламы имеется, то мы его несколько меняем, добавляя класс alignright для выравнивания по правой стороне.
Ну и теперь, все, что нам осталось — это вывести рекламы в посте
Code$content = substr($content,0,$pos).$ad. substr($content,$pos);
Мы выводим текст с первой позиции до середины, далее наш код рекламы и оставшуюся часть контента.
Вот и все.
Теперь о том, куда это вставить. А вставить его нужно там, где выводится контент для страницы поста.
У каждого он свой. Я приведу три общих примера.
1. Шаблон сделан на Artisteer , но на старых версиях. Тогда на странице шаблона Одна запись
(single.php) Вы найдете примерно такой код:
Code
art_post_wrapper(
  array(
  ‘id’ => art_get_post_id(),  
  ‘class’ => art_get_post_class(),
  //’thumbnail’ => art_get_post_thumbnail(),
  ‘title’ => art_get_meta_option($post->ID, ‘art_show_post_title’) ? get_the_title() : »,  
  ‘before’ => art_get_metadata_icons(‘date,edit’, ‘header’),
  ‘content’ => art_get_content(), // ‘content’ => ‘My post content’,
  ‘after’ => art_get_metadata_icons(‘category,tag’, ‘footer’)
  )
  );

Прямо над ним и надо вставить наш код, а art_get_content() в этом коде заменить на полученный нами $content .
2. Шаблон сделан на Artisteer версии 3 и выше. Тогда на странице шаблона content-single.php
(content-single.php) Вы найдете примерно такой код:
Code
theme_post_wrapper(
  array(
  ‘id’ => theme_get_post_id(),  
  ‘class’ => theme_get_post_class(),
  ‘title’ => theme_get_meta_option($post->ID, ‘theme_show_post_title’) ? get_the_title() : »,  
  ‘before’ => theme_get_metadata_icons(‘edit’, ‘header’),
  ‘content’ =>theme_get_content(),
  ‘after’ => theme_get_metadata_icons(‘tag’, ‘footer’)
  )
  );

Аналогично, прямо над ним и надо вставить наш код, а theme_get_content() в этом коде заменить на полученный нами $content .
3. Классический шаблон, в котором содержание выводится в файле шаблона Одна запись
(single.php) строчкой
Code<?php the_content(»); ?>
ее надо заменить на
Code
<?php
$content=get_the_content(»);
$content = apply_filters(‘the_content’, $content);
$kolsimcontent=mb_strlen($content,’UTF-8’);
if ($kolsimcontent>2000):
  $medium=$kolsimcontent/2;
  $pos=strpos($content,’.’,$medium)+1;
  $ad = ‘код рекламы’;
  if(!empty($ad)):
  $ad = ‘<div class=»ad alignright»>’.$ad.'</div>’;  
  endif;
  $content = substr($content,0,$pos).$ad. substr($content,$pos);
endif;
echo $content;
?>

Вот и все. Надеюсь у Вас получится.