Как добавить Google Adsense в середину записи WordPress
5 февраля 2015 в 13:00 в категории Статьи о php 10 комментариевПри создании сайта, если вы собираетесь его в дальнейшем монетизировать, следует обратить внимание и продумать места для размещения рекламы в будущем. И я говорю не только о Google Adsense, но и про другие рекламные блоки.

Одними из популярных мест для размещения рекламных блоков является шапка сайта (начало статьи, страницы), но разместить там код рекламного баннера достаточно просто, а как разместить код того же Google Adsense в тексте записи сайта на WordPress без плагинов?
Итак, для того чтобы разместить код рекламного блока Google Adsense или других рекламных площадок, вам необходимо будет отредактировать файл functions.php в папке с вашей темой.
Добавим в код вашего файла (можно в конец файла) следующую функцию:
function prefix_insert_after_paragraph( $insertion, $paragraph_id, $content ) {
$closing_p = '</p>';
$paragraphs = explode( $closing_p, $content ); // разбиваем текст статьи по параграфам
foreach ($paragraphs as $index => $paragraph) { // пробегаемся по параграфам
if ( trim( $paragraph ) ) {
$paragraphs[$index] .= $closing_p; // добавляем вырезанные на 3 строке закрывающие теги параграфа
}
if ( $paragraph_id == $index + 1 ) { // если номер текущего параграфа = номеру требуемого - добавляем код блока
$paragraphs[$index] .= $insertion;
}
}
return implode( '', $paragraphs ); // совмещаем все параграфы вместе и отдаем
}
Данная функция позволяет разбивать текст ($content) ваших записей/постов блога на блоки по параграфам и вставляет после определенного номера ($paragraph_id) параграфа код, передаваемый в функцию в переменной $insertion.
Далее нам необходимо вызвать эту функцию при обращении к нашей записи. Для этого нам необходимо добавить строку с добавлением фильтра и функцию:
add_filter( 'the_content', 'prefix_insert_post_ads' ); // Добавляем обработку текста статьи
function prefix_insert_post_ads( $content ) { // В функцию передаем текст статьи
$ad_code = 'Тут код вашего рекламного блока'; // Указываем код рекламного блока для вставки
if ( is_single() && ! is_admin() ) { // вызываем функцию для одиночной записи и не вызываем функцию если мы в администраторской панели
return prefix_insert_after_paragraph( $ad_code, 2, $content ); // Если были соблюдены все правила возвращаем обработанный функцией исходный код статьи уже с кодом рекламного блока
// передаются параметры: код рекламного блока, номер параграфа, после которого будет блок размещен, контент
}
return $content; // в противном случае возвращаем просто текст статьи
}
Вы можете настроить данный скрипт так как вам угодно, например вы можете скомпоновать все действия в одну функцию (мне кажется так будет удобнее и корректнее, зачем плодить функции?) таким образом:
add_filter( 'the_content', 'prefix_insert_post_ads' );
function prefix_insert_post_ads( $content ) {
$ad_code = 'Тут код вашего рекламного блока';
if ( is_single() && ! is_admin() ) {
$closing_p = '</p>';
$paragraphs = explode( $closing_p, $content );
foreach ($paragraphs as $index => $paragraph) {
if ( trim( $paragraph ) ) {
$paragraphs[$index] .= $closing_p;
}
if ( X == ($index + 1) ) { // X = номер параграфа
$paragraphs[$index] .= $ad_code;
}
}
return implode( '', $paragraphs ); // совмещаем все параграфы вместе и отдаем
}
return $content;
}
Если вы хотите добавить несколько рекламных баннеров в текст вашей статьи, то вам необходимо добавить просто еще одно условие, например такое:
add_filter( 'the_content', 'prefix_insert_post_ads' );
function prefix_insert_post_ads( $content ) {
$ad_code = 'Тут код вашего рекламного блока';
/* Добавляем второй рекламный блок */
$ad_code = 'Тут код вашего второго рекламного блока';
/* Добавили второй рекламный блок */
if ( is_single() && ! is_admin() ) {
$closing_p = '</p>';
$paragraphs = explode( $closing_p, $content );
foreach ($paragraphs as $index => $paragraph) {
if ( trim( $paragraph ) ) {
$paragraphs[$index] .= $closing_p;
}
if ( X == ($index + 1) ) { // X = номер параграфа
$paragraphs[$index] .= $ad_code;
}
/* Добавляем второе условие */
if ( X2 == ($index + 1) ) { // X2 = номер второго параграфа
$paragraphs[$index] .= $another_ad_code;
}
/* Добавили второе условие */
}
return implode( '', $paragraphs ); // совмещаем все параграфы вместе и отдаем
}
return $content;
}
А если вы хотите добавить рекламный блок в конец записи на сайте на WordPress, то просто добавьте условие:
add_filter( 'the_content', 'prefix_insert_post_ads' );
function prefix_insert_post_ads( $content ) {
$ad_code = 'Тут код вашего рекламного блока';
if ( is_single() && ! is_admin() ) {
$closing_p = '</p>';
$paragraphs = explode( $closing_p, $content );
$count_p = count($paragraphs);
foreach ($paragraphs as $index => $paragraph) {
if ( trim( $paragraph ) ) {
$paragraphs[$index] .= $closing_p;
}
if ( $count_p == ($index + 1) ) {
$paragraphs[$index] .= $ad_code;
}
}
return implode( '', $paragraphs );
}
return $content;
}
Таким же образом вы можете добавить блок рекламных объявлений к любым другим тегам, которые вы используете при размете ваших записей на вашем сайте на CMS WordPress, которые у вас встречаются в тексте записи.

(446 оценок, среднее: 4,90 из 5)
10 комментариев
Google Adsense выводит?
Собственно название статьи об этом и гласит, разве нет?
Просто еще ни один плагин, который пробовал, адекватно не выводит рекламу гугла в середине. Буду пробовать этот способ. Надеюсь вы проверили)))
Не поверите, но именно таким образом выводится реклама на моем сайте.
Результат один и то же((((( Реклама выводится некорректно.
Возможно проблема не в скрипте? Что конкретно у вас не получается?
Стиль и размер объявления не соответствует заданному. Не важно какого размера созадаешь объявления, отображается один и тот же размер. Если скрипт вставляешь непосредственно в станицу записи, то все нормально, например, в начале или в конце статьи. Но, мне нужно вставить объявление после 3-го абзаца.
Нужно разбираться и смотреть изнутри что у вас не так сделано.
Если хотите — обратитесь в раздел контактов — попробую помочь.
Спасибо за комментарий.
подскажите, пожалуйста, как реализовать работу данного кода в записях определенной категории?
добавить проверку на принадлежность поста в категории внутри самой записи.
Используйте функцию get_the_category().
https://developer.wordpress.org/reference/functions/get_the_category/