Некоторые веб-мастера сталкиваются со сложностями при размещении кода рекламного блока от Google Adsence или Яндекс РСЯ непосредственно в теле статьи, чаще всего ломается вёрстка из-за незакрытого тега. Решить проблему помогут несколько плагинов для WordPress или вариант (для продвинутых), вставка шорткода при помощи отложенной функции.
Вставка шорткода при помощи функции
Нам потребуется любой текстовый редактор, например SublimeText или Notepad++ , FTP клиент для подключения к хотингу, я рекомендую WinSCP. Для того чтобы добавить свой шорткод, его необходимо зарегистрировать и назначить функцию обработчика, которая будет выполнена тогда, когда WordPress будет интерпретировать ваш шорткод. Первым делом давайте добавим функцию.
Для этого перейдите в папку с вашей темой, обычно это /wp-content/themes/папка_активной_темы/ . Активную тему можно посмотреть в разделе Внешний вид -> Темы в панели управления сайтом. Здесь нам нужен файл functions.php, откроем его в редакторе и добавим следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/** * Рекламный блок №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
), а второй имя вызываемой функции.
Остаётся вставить шорткод в теле поста или страницы, заключив его в квадратные скобки вот так:
1 |
[advert_block_1] |
В результате в публичной части сайт, в этом посте мы увидим тот текст что вернёт нам функция обработчик add_advert_block_1()
.
Естественно вместо текста
1 |
<p><b>Код рекламного блока №1</b></p> |
Может быть ваш рекламный блок с GoogleAdsence или Яндекс.РСЯ. Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
/** * Рекламный блок Яндекс * @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'); |
Вызов шорткода в статье
1 |
[add_advert_yandex_block_1] |
Этот же шорткод можно использовать не только в теле статьи, но и непосредственно в коде шаблона. Для этого в WordPress существует специальная функция do_shortcode()
которая исполняет шорткод принудительно из php кода. Например можно вывести рекламный блок после каждой статьи. Для этого нужно найти файл отвечающий за отрисовку поста, в моей теме это файл /wp-content/themes/папка_активной_темы/page.php, находим блок где заканчивается тело статьи и вставляем подобный код:
1 |
<?=do_shortcode( '[advert_yandex_block_1]' ); ?> |
Как видите в качестве аргумента функции do_shortcode()
передаётся такая же строка с шорткодом в квадратных скобках как и при вставке в пост. Результат:
На мой взгляд это наиболее удобный способ вставки рекламных блоков, однако многие веб-мастера зарабатывающие на сайтах не обладают навыками работы с кодом и сопутствующими программами, для них есть специальный плагин.
Вставка шорткода при помощи плагина WordPress
По правде сказать, при подготовке материала, я не нашёл удобного простого и бесплатного плагина для такой задачи. Плагин AdSense In-Post Ads уже не выпускается и давно не поддерживается (сайт разработчика недоступен). Но он предоставлялся по лицензии GNU, а значит с ним можно делать всё что угодно. Из коробки плагин создавал в системе 3 предустановленных шорткода, а за их содержание можно было редактировать из админки WordPress.
Я доработал плагин, расширив количество блоков до десяти (думаю этого хватит чтобы забить статью любой длины). И так, качаем архив с плагином:
Внимание! Плагин у меня работает на версиях WordPress 4.9.8 и 5.6, для других версий он не тестировался. Поэтому, на всякий случай сделайте полную резервную копию сайта.
А почему нельзя флат пмом расставить блоки в теле?
Не знаком с этим плагином, если его функционал в бесплатном варианте позволяет расставить рекламные блоки в статьях, я включу его в статью. Спасибо.