Предыдущий пост был посвящен тому, как вывести рекламный блок Google AdSense или Яндекс Директ в теле статьи с помощью плагина Advertising Manager В этой статье мы выведем рекламное объявление Google AdSense (для Яндекс Директ также рассмотрим) в теле статьи блога на WordPress с использованием Shortcodes (коротких кодов) WordPress.
Во первых, зачем это надо? Каждый плагин написан так что бы работать на большинстве установленных тем и, следовательно, имеет некоторую избыточность, которая приводит к дополнительным нагрузкам на сервер хостера. Пока у Вас небольшая посещаемость, и следовательно нагрузка, это не страшно. В будущем, когда число посетителей резко увеличится, это может оказаться критическим. Тем более это довольно просто, если вы обладаете начальными знаниями PHP и HTML.
Для начала нужно получить сам код рекламного блока Google AdSense или Яндекс Директ, который вы будете размещать в статьях своего блога.Далее в меню административной консоли Внешний Вид … Редактор открываем файл Функции темы (function.php) для редактирования.
Если в вашей теме нет такого файла, то нужно в любом текстовом редакторе, я предпочитаю NotePadd++, создать текстовый файл с двумя строками, первая:
<?php
вторая:
?>
Обозначения начала и окончания PHP кода, между которыми мы и будем добавлять код нашей функции. После чего сохранить файл, назвав его functions.php (обязательно маленькими буквами).
Затем скопировать этот файл functions.php в папку с активной темой оформления WordPress на сервер вашего хостинга:
/wp-content/themes/Название_темы_оформления
.
Если у вас уже есть файл functions.php, и в нем находится какой-либо PHP код, то нужно найти место для вставки кода функции, не нарушив их работоспособности. Желательно выбрать место, между отдельными, уже имеющимися, функциями. Чего не стоит делать, так это вставлять ваш код внутрь существующих функций, можно нарушить их работоспособность. Лучше всего найти в коде сочетание function название_функции()
и разместить ваш PHP код на предыдущих строках, например вот так:
Сам код очень простой и фактически это код рекламного объявления Google AdSense или Яндекс Директ с заэкранированными кавычками и добавленными операторами языка PHP. Для рекламных блоков Google AdSense, например это выглядит так:
function showads() {
return '<script type="text/javascript"><!--
google_ad_client = "pub-xxxxxxxxxxxxxxxxxxxx";
google_ad_slot = "2115508237";
google_ad_width = 468;
google_ad_height = 60;
//--
></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>';
}
add_shortcode('adsense', 'showads');
А так выглядит код для рекламного блока Яндекс Директ:
function showdirect() {
return '<script type="text/javascript"><!--
yandex_partner_id = XXXXX;
yandex_site_charset = \'utf-8\';
yandex_ad_format = \'direct\';
yandex_font_size = 1;
yandex_direct_type = \'horizontal\';
yandex_direct_border_type = \'block\';
yandex_direct_limit = 1;
yandex_stat_id = 8;
yandex_direct_favicon = \'true\';
yandex_direct_title_color = \'186EAE\';
yandex_direct_url_color = \'cccccc\';
yandex_direct_all_color = \'cccccc\';
yandex_direct_text_color = \'555555\';
yandex_direct_hover_color = \'8DAB4A\';
document.write(\'<sc\'+\'ript type="text/javascript"src="http://an.yandex.ru/system/context.js"></sc\'+\'ript>\');
//--></script>';
}
add_shortcode('yandex', 'showdirect');
Каждая кавычка в PHP коде важна и ее отсутствие или присутствие в том месте, где она не нужна, может привести к неработоспособности кода. Участок PHP кода, который заключен между открывающим и закрывающим Html тегами script (включая сами Html теги) собственно и есть код рекламного объявления, который Вы получили на сайте Google AdSense или Яндекс Директ.Обратите внимание! В код рекламного блока Яндекс Директ внесены изменения — перед всеми одинарными кавычками (‘), в коде блока контекстной рекламы, установлен символ «\» — обратный слеш. Вот это и называется — экранированием кавычек в PHP. Пропуск хотя бы одной кавычки не заэкранированной, приведет к тому, что функция вывода контекстной рекламы на страницу WordPress работать не будет.Слово showads(showdirect) в PHP коде — название созданной нами функции, а в последней строке кода, мы присваиваем этому названию псевдоним (в нашем случае это adsense /yandex), который потом будет использоваться для указания места вывода рекламного объявления Яндекс Директ или Google AdSense в статье блога на WordPress. Выглядеть в тексте поста блога это будет так:
[
adsense
]
На месте этой надписи при просмотре вашего поста будет показано рекламный блок Google AdSense или Яндекс Директ.
Я рекомендую для вывода этой конструкции создать класс в таблице стилей CSS , например adv, и выводить в html тэгах div с указанием созданного класса. Примерно так это будет выглядеть:
<div class="adv">[
yandex
]</div>
Есть еще вариант сделать это в самом коде функции, просто заключив код рекламного блока в html тэгах div с указанием класса, на примере кода для Яндекс.Директ:
function showdirect() {
return '<div class="adv"><script type="text/javascript"><!--
yandex_partner_id = XXXXX;
yandex_site_charset = \'utf-8\';
yandex_ad_format = \'direct\';
yandex_font_size = 1;
yandex_direct_type = \'horizontal\';
yandex_direct_border_type = \'block\';
yandex_direct_limit = 1;
yandex_stat_id = 8;
yandex_direct_favicon = \'true\';
yandex_direct_title_color = \'186EAE\';
yandex_direct_url_color = \'cccccc\';
yandex_direct_all_color = \'cccccc\';
yandex_direct_text_color = \'555555\';
yandex_direct_hover_color = \'8DAB4A\';
document.write(\'<sc\'+\'ript type="text/javascript"src="http://an.yandex.ru/system/context.js"></sc\'+\'ript>\');
//--></script></div>';
}
add_shortcode('yandex', 'showdirect');
Это более удачный вариант, поскольку, если Вы потом решите изменить стиль оформления для всех блоков, то Вам не нужно будет вносить изменения во все статьи, достаточно будет изменить только созданную Вами функцию. Вы можете создать столько функций в файле Functions.php, сколько Вам необходимо для различных рекламных блоков Google AdSense или Яндекс Директ и назначить для них соответствующие короткие коды для указания в теле постов Вашего блога места, где Вы хотите выводить рекламу.
Всё просто и доходчево.
Когда вставляла код от Google AdSense намучилась. Прочитала кучу всякой всячины. Пишут таким языком, что понять может только программист. Жаль, что не было вашей статьи тогда. Яндекс Директ так и не удалось сделать. Теперь сделаю. Спасибо.
а я пожалую, еще знаний подкоплю — пока не хватает
Спасибо, все «разжевали».
да мне еще учится и учится . рекламу просмотрела
Для меня пока тяжеловато, оставлю ваш сайт в закладках, думаю что скоро мне понадобиться.
Написано для меня, всё по шагам, благодарю!
А мне так трудно дается вся эта техника
Спасибо за такую подробную инструкцию.
Оставлю в закладках. Google AdSense поставила без проблем, а Яндекс Директ ещё не добавляла.
Владимир, спасибо за инфу. Но у меня возникла проблема после вставки шорткода — расплывается вёрстка на главной странице, а конкретно анонсы статей, уползают в сайдбар, вправо и влево, выглядит ужасно. Анонсы статей делал с помощью плагина the_excerpt Reloaded. Может встречали подобное? заранее спасибо!
Плагином The_except Reloaded не пользовался. Но подобное было, когда ширина вставляемого блока рекламы превышала размер колонки, в этом случае у меня весь правый сайдбар «уезжал» вниз. Вылечил изменением размера рекламного блока.
Хорошо если разбираешься в PHP, я к сожалению этим похвастаться не могу.
Владимир, у меня есть файл functions.php, я установил кучу плагинов, но выводятся все блоки кроме яндекс директ. Если бы я вам скинул этот свой functions.php, могли бы вы мне указать в нем куда именно мне вставлять блоки, чтобы реклама выводилась в начале, конце и середине поста?
Спасибо.
Андрей, давайте попробуем. Написал на Ваш е-майл.
А не проще ли сразу в статью вставлять скопированный код объявления?
Ну, это тем, кто как я боится чего-то напортачить?
Я попробовала, вроде бы просто.
Может так нельзя?
Можно пойти и по этому пути, но представьте себе, что Вам нужно что-то изменить в объявлениях, например размер блока, количество отображаемых объявлений и т.п.
В случае, если объявление просто вставлено в текст статьи, то придется править все статьи, где Вы добавляли этот код, вместо внесения изменений в одном месте.
Как говориться почувствуйте разницу 🙂
Понятно, так, конечно, будет проще. Спасибо за быстрые ответы.Думаю еще вернусь к этой Вашей статье.