Некоторые веб-мастера сталкиваются со сложностями при размещении кода рекламного блока от Google Adsence или Яндекс РСЯ непосредственно в теле статьи, чаще всего ломается вёрстка из-за незакрытого тега. Решить проблему помогут несколько плагинов для WordPress или вариант (для продвинутых), вставка шорткода при помощи отложенной функции.

Вставка шорткода при помощи функции

Нам потребуется любой текстовый редактор, например SublimeText или Notepad++ , FTP клиент для подключения к хостингу, я рекомендую WinSCP. Для того чтобы добавить свой шорткод, его необходимо зарегистрировать и назначить функцию обработчика, которая будет выполнена тогда, когда WordPress будет интерпретировать ваш шорткод. Первым делом давайте добавим функцию.

Для этого перейдите в папку с вашей темой, обычно это /wp-content/themes/папка_активной_темы/ . Активную тему можно посмотреть в разделе Внешний вид -> Темы в панели управления сайтом. Здесь нам нужен файл functions.php, откроем его в редакторе и добавим следующий код:


/**
 * Рекламный блок №1
 * @return string
 */
function add_advert_block_1(){
    //Возвращаем код рекламного блока
    return '
        <p><b>Код рекламного блока №1</b></p>
    ';
}

//Регистрируем наш шорткод
add_shortcode('advert_block_1', 'add_advert_block_1');

Функция add_advert_block_1() главное действующее лицо, она вызывается когда WordPress дойдёт до шорткода в теле статьи или где-то в исходном коде темы. Сам же шорткод определяется функцией add_shortcode() где первый параметр это сам шорткод (в данном случае advert_block_1), а второй имя вызываемой функции.

Остаётся вставить шорткод в теле поста или страницы, заключив его в квадратные скобки вот так:


[advert_block_1]

Шорткод в теле статьи

В результате в публичной части сайт, в этом посте мы увидим тот текст что вернёт нам функция обработчик add_advert_block_1() .

Результат вставки шорткода

Естественно вместо текста «Код рекламного блока №1» Может быть ваш рекламный блок с GoogleAdsence или Яндекс.РСЯ. Пример:


/**
 * Рекламный блок Яндекс
 * @return string
 */
function add_advert_yandex_block_1(){
    //Возвращем код рекламого блока
    return '
        <!-- Yandex.RTB R-A-687555-1 -->
        <div id="yandex_rtb_R-A-687555-1"></div>
        <script type="text/javascript">
            (function(w, d, n, s, t) {
                w[n] = w[n] || [];
                w[n].push(function() {
                    Ya.Context.AdvManager.render({
                        blockId: "R-A-687555-1",
                        renderTo: "yandex_rtb_R-A-687555-1",
                        async: true
                    });
                });
                t = d.getElementsByTagName("script")[0];
                s = d.createElement("script");
                s.type = "text/javascript";
                s.src = "//an.yandex.ru/system/context.js";
                s.async = true;
                t.parentNode.insertBefore(s, t);
            })(this, this.document, "yandexContextAsyncCallbacks");
        </script>
    ';
}

//Регистрируем наш шорткод
add_shortcode('advert_yandex_block_1', 'add_advert_yandex_block_1');

Вызов шорткода в статье 
 

[add_advert_yandex_block_1]


Результат:

Реклама от яндекса, шорткодом Wordpress

Этот же шорткод можно использовать не только в теле статьи, но и непосредственно в коде шаблона. Для этого в WordPress существует специальная функция do_shortcode() которая исполняет шорткод принудительно из php кода.  Например можно вывести рекламный блок после каждой статьи. Для этого нужно найти файл отвечающий за отрисовку поста, в моей теме это файл /wp-content/themes/папка_активной_темы/page.php, находим блок где заканчивается тело статьи и вставляем подобный код:

<?=do_shortcode( '[advert_yandex_block_1]' ); ?>

Как видите в качестве аргумента функции do_shortcode() передаётся такая же строка с шорткодом в квадратных скобках как и при вставке в пост. Результат:
Вставка шорткода в шаблон Worderpss

На мой взгляд это наиболее удобный способ вставки рекламных блоков, однако многие веб-мастера зарабатывающие на сайтах не обладают навыками работы с кодом и сопутствующими программами, для них есть специальный плагин.

Вставка шорткода при помощи плагина WordPress

По правде сказать, при подготовке материала, я не нашёл удобного простого и бесплатного плагина для такой задачи. Плагин AdSense In-Post Ads уже не выпускается и давно не поддерживается (сайт разработчика недоступен). Но он предоставлялся по лицензии GNU, а значит с ним можно делать всё что угодно. Из коробки плагин создавал в системе 3 предустановленных шорткода, а за их содержание можно было редактировать из админки WordPress.

Я доработал плагин, расширив количество блоков до десяти (думаю этого хватит чтобы забить статью любой длины). Скачать плагин можно в конце статьи.

Далее переходим на ваш сайт, в раздел Плагины -> Добавить новый, жмём кнопку Загрузить плагин, выбираем файл архива плагина и жмём кнопку Установить.

Установка плагина

Внимание! Плагин у меня работает на версиях WordPress 4.9.8 и 5.6, для других версий он не тестировался. Поэтому, на всякий случай сделайте полную резервную копию сайта.
После установки плагина, жмём кнопку Активировать и переходим к настройкам в раздел Настройки -> AdSense In-Post. Здесь вы увидите 10 текстовых блоков, куда вы можете ввести код вставки рекламы с Google Adsence или Яндекс.РСЯ и дальше использовать эти рекламные блоки в своих статьях при помощи шорткодов.

Вставка рекламных блоков в плагин

Теперь вставляем шорткоды в статью:

Вставляем шорткоды в статью

И результат:

Результат вставки шорткодов в статью

Как видите, вместо шорткодов вставилось заданное в админке содержимое. Всё работает отлично и вам не пришлось копать исходный код. Если десяти блоков будет недостаточно, напишите мне на почту или в комментариях к статье, я расширю возможности этого плагина. Желаю удачи!


Спсиок файлов к статье (исходники)
Полезная статья?
(Нет голосов)
Вам также могут понравиться
Как подключить CSS и JS файлы к шаблону 1С Битрикс

Как подключить CSS и JS файлы к шаблону 1С Битрикс

Как правильно подключать стили и скрипты к шаблону 1С Битрикс.

Генерация оглавления статьи

Генерация оглавления статьи

В статье рассмотрен пример функции для генерации оглавления статьи блога или новости

Переменные доступные в компоненте 1С Битрикс

Переменные доступные в компоненте 1С Битрикс

В статье разобран список доступных в компоненте 1С Битрикс переменных, позволяющих получить доступ к различным параметрам и методам компонента.


Комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
18.01.2021 | Леонид

А почему нельзя флат пмом расставить блоки в теле?

Комментировать | 0  
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
Закрыть
18.01.2021 | maler1988

Не знаком с этим плагином, если его функционал в бесплатном варианте позволяет расставить рекламные блоки в статьях, я включу его в статью. Спасибо.

Комментировать | 0  
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
Закрыть