Если вставка рекламы Google Adsense или любого другого рекламного блока на страницы блога WordPress дело достаточно тривиальное и относительно легко реализуемое — достаточно разбираться в структуре шаблонов WordPress и обладать минимальными знаниями html/css — то вот со вставкой рекламы после тега more придется немного попотеть. Дело в том, что простым методом редактирования шаблона тут уже не обойтись — в WordPress все содержимое поста выводится в одном блоке the_content() и разделить его просто так не получится.
Есть несколько вариантов реализации данной задачи:
- использовать ранее созданные шорткоды в каждой статье (самописные или созданные через плагины);
- использовать соответствующие плагины;
- использовать файл functions.php.
Способ 1 неудобен тем, что все ранее размещенные на блоге статьи придется отредактировать вручную и вставить шорткоды. Если статей десяток-другой — это еще можно сделать, но если их количество переваливает за сотню — задача становится малоинтересной. Кроме того, при написании новых статей, необходимо будет четко помнить о необходимости добавления шорткода.
Способ 2 плох тем, что плагины а) отнимают память и б) имеют тенденцию устаревать и оказываться несовместимыми с новыми версиями WordPress в самый неподходящий момент. И есть еще пункт в) в конце поста я покажу как можно вставлять рекламный блок в отдельные статьи. Плагина, который бы обладал подобным функционалом, я не встречал.
Способ 3 — на мой взгляд, идеален. Во-первых, мы экономим память, а во-вторых — простота используемой функции почти на 100% гарантирует нам работоспособность требуемого функционала. Ну, а если что — подправить будет легче, чем ждать пока автор плагина выложит новую версию (если это вообще произойдет).
Собственно, а зачем вообще размещать рекламу после тега more? Обратимся к рекомендациям Google по размещению блоков Adsense:
Размещайте объявления рядом с контентом, который интересует пользователей. Подумайте о том, легко ли вашим посетителям найти нужную информацию.
После этого Google показывает нам как правильно и не правильно размещать блоки для достижения лучшей кликабельности:
При этом легко понять, что наиболее важной частью страницы любого блога является непосредственно сама статья. Шапка, подвал, сайдбары — вторичны. Следовательно — под и над контентом блоки размещать не стоит, что логично:
- блок ДО статьи — посетитель еще не успел понять стоит ли ему читать материал дальше и отвлекаться на рекламу он не будет;
- блок ПОД статьей — многие блоги имеют высокий показатель отказа по причине того, что пользователь закрывает страницу сайта сразу после того как прочитал статью. Соответственно, рассчитывать на клики после «финальной точки» — особо не стоит.
Таким образом, мы логично приходим к пониманию того факта, что размещать блок наиболее оптимально после вступления к статье. Собственно, средняя схема в рекомендациях Google показывает нам именно его.
Итак, когда с теоретической частью мы разобрались, давайте перейдем к практике. Итак, как же разместить рекламный блок после тега more в WordPress без использования плагинов?
Для этого нам понадобится:
- Найти в папке нашей темы WordPress файл functions.php. Если такого файла вдруг нет — его нужно создать. Если есть — обязательно сделайте его резервную копию перед добавлением кода.
- Добавить в файл functions.php следующий код:
// Как вставить рекламу после тега more в WordPress без плагинов add_filter('the_content', 'adsense_added_at_more_tag'); function adsense_added_at_more_tag($text) { if( is_single() ) : $ads_text = ' <div class="adsense"> // здесь будет код Adsense или любой другой рекламный блок </div> '; $pos1 = strpos($text, '<span id="more-'); $pos2 = strpos($text, '</span>', $pos1); $text1 = substr($text, 0, $pos2+7); $text2 = substr($text, $pos2+7); $text = $text1 . $ads_text . $text2; endif; return $text; }
- открыть файл с CSS-стилями нашей темы и добавить в него оформление нашего рекламного блока. К примеру, можно сделать вот так:
.adsense { display:block; width:100%; text-align: center; background: #FFF; }
Если вы хотите размещать блоки только в, к примеру, наиболее популярных статьях (чаще всего, они будут из разных рубрик), то для этого необходимо 4-ю строку в коде заменить на:
if ( is_single (array (1,2,3) ) ) :
, где 1,2,3 — это ID постов, в которых нужно показывать блок. В таком случае, в остальных постах он показываться не будет.
Собственно говоря, это все. Наш блок готов и будет выводиться в любом посте, который был разделен тегом more.