Как вставить рекламу после тега more в WordPress без плагинов

Как вставить рекламу после тега more в Wordpress без плагинов

Если вставка рекламы Google Adsense или любого другого рекламного блока на страницы блога WordPress дело достаточно тривиальное и относительно легко реализуемое — достаточно разбираться в структуре шаблонов WordPress и обладать минимальными знаниями html/css — то вот со вставкой рекламы после тега more придется немного попотеть. Дело в том, что простым методом редактирования шаблона тут уже не обойтись — в WordPress все содержимое поста выводится в одном блоке the_content() и разделить его просто так не получится.

Есть несколько вариантов реализации данной задачи:

  1. использовать ранее созданные шорткоды в каждой статье (самописные или созданные через плагины);
  2. использовать соответствующие плагины;
  3. использовать файл functions.php.

Способ 1 неудобен тем, что все ранее размещенные на блоге статьи придется отредактировать вручную и вставить шорткоды. Если статей десяток-другой — это еще можно сделать, но если их количество переваливает за сотню — задача становится малоинтересной. Кроме того, при написании новых статей, необходимо будет четко помнить о необходимости добавления шорткода.

Способ 2 плох тем, что плагины а) отнимают память и б) имеют тенденцию устаревать и оказываться несовместимыми с новыми версиями WordPress  в самый неподходящий момент. И есть еще пункт в) в конце поста я покажу как можно вставлять рекламный блок в отдельные статьи. Плагина, который бы обладал подобным функционалом, я не встречал.

Способ 3 — на мой взгляд, идеален. Во-первых, мы экономим память, а во-вторых — простота используемой функции почти на 100% гарантирует нам работоспособность требуемого функционала. Ну, а если что — подправить будет легче, чем ждать пока автор плагина выложит новую версию (если это вообще произойдет).

Собственно, а зачем вообще размещать рекламу после тега more? Обратимся к рекомендациям Google по размещению блоков Adsense:

Размещайте объявления рядом с контентом, который интересует пользователей. Подумайте о том, легко ли вашим посетителям найти нужную информацию.

После этого Google показывает нам как правильно и не правильно размещать блоки для достижения лучшей кликабельности:

Как вставить рекламу после тега more в WordPress без плагинов

 

При этом легко понять, что наиболее важной частью страницы любого блога является непосредственно сама статья. Шапка, подвал, сайдбары — вторичны. Следовательно — под и над контентом блоки размещать не стоит, что логично:

  • блок ДО статьи — посетитель еще не успел понять стоит ли ему читать материал дальше и отвлекаться на рекламу он не будет;
  • блок ПОД статьей — многие блоги имеют высокий показатель отказа по причине того, что пользователь закрывает страницу сайта сразу после того как прочитал статью. Соответственно, рассчитывать на клики после «финальной точки» — особо не стоит.

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

Итак, когда с теоретической частью мы разобрались, давайте перейдем к практике. Итак, как же разместить рекламный блок после тега more в WordPress без использования плагинов?

Для этого нам понадобится:

  1. Найти в папке нашей темы WordPress файл functions.php. Если такого файла вдруг нет — его нужно создать. Если есть — обязательно сделайте его резервную копию перед добавлением кода.
  2. Добавить в файл 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;
}
  1. открыть файл с CSS-стилями нашей темы и добавить в него оформление нашего рекламного блока. К примеру, можно сделать вот так:
.adsense {
display:block;
width:100%;
text-align: center;
background: #FFF;
}

Если вы хотите размещать блоки только в, к примеру, наиболее популярных статьях (чаще всего, они будут из разных рубрик), то для этого необходимо 4-ю строку в коде заменить на:

if ( is_single (array (1,2,3) ) ) :

, где 1,2,3 — это ID постов, в которых нужно показывать блок. В таком случае, в остальных постах он показываться не будет.

Собственно говоря, это все. Наш блок готов и будет выводиться в любом посте, который был разделен тегом more.

60 комментариев к “Как вставить рекламу после тега more в WordPress без плагинов”

  1. Чудесно, что после долгого перерыва вы опять пишете статьи)

    ОтветитьОтветить
  2. @Талар: спасибо за то, что не смотря на долгий перерыв, не отписались от обновлений блога :)

    ОтветитьОтветить
  3. Отличный материал, а главное рабочий код, у меня все получилось. Спасибо вам огромное)

    ОтветитьОтветить
  4. Хм, а как думаете, если и через плагин и вручную, вместо рекламы вставляется пустое место (код вставляется правильный), что в этом случае лучше сделать

    ОтветитьОтветить
  5. @Василий: в смысле — «через плагин или вручную»? Код вставляется в functions.php через текстовый редактор.

    ОтветитьОтветить
  6. Плагином проще) А есть разница плагином или так? Как лучше?

    ОтветитьОтветить
  7. @Igor: не знаю о каком плагине идет речь, но в целом разницы быть не должно, за исключением того, что любой плагин больше или меньше ест память.

    ОтветитьОтветить
  8. Спасибо за инфу, полезно! Обязательно возьму себе на заметку.

    ОтветитьОтветить
  9. Хороший материал, а главное рабочий код, у меня все получилось. Спасибо вам большое)

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

    ОтветитьОтветить
  11. А я пока тег more не использую, но если мне понадобится поставить рекламу, то я обращусь к этой статье. В любом случае, полезно знать, что так можно.

    ОтветитьОтветить
  12. Спасибо большое, ваш сайт самый лучший, всегда на нем сижу))))

    ОтветитьОтветить
  13. Ой это большая проблема вставить рекламку или баннер после читать дальше. Сама дошла до этого методом проб и ошибок. Мне б эту статью год назад я сэкономила бы много времени

    ОтветитьОтветить
  14. Спасибо большое за статью, уже не первый день изучаю тему насчет адсенса и яндекс директа, вот только пока посещаемость блога маленькая и многие не рекомендуют ставить пока адсенс, но как только раскручусь, обязательно воспользуюсь вашим советом и поставлю рекламу после тега More :))

    ОтветитьОтветить
  15. У меня блок рекламы в сайдбаре стоит. Это было не сложно. А вот как в статьи поставить, я до сих пор не разобрался. Прочитал вашу статью, вроде все понятно. Буду пробовать. Я еще плохо разбираюсь во всех этих тонкостях. Буду учиться. Спасибо за полезную информацию.

    ОтветитьОтветить
  16. Мне вот удалось поставить блок после статьи, а хочется поставить в середине, хотя говорят, что лучше ставить под заголовком, голова уже кругом идет, а конверсии нет, буду пробовать ставить после мора. Спасибо за код.

    ОтветитьОтветить
  17. Раньше пытался решить проблему, но не удавалось, то плагин корявый, то руки не доходили, но теперь. после того как прочитал статью, сделал по третьему способу «functions.php» и заработало.

    ОтветитьОтветить
  18. Почему вы пишете что плагины тормозят, сейчас вроде от этой мысли уже практически все отказались?
    Плагин — это тот же код. Вот я с помощью плагина Post Layout вставляю, все нормально. А кстати, код тоже надо правильно вставить, а то ошибки бывают и не к каждой теме подходят.

    ОтветитьОтветить
  19. @Надежда: от мысли, может быть, и отказались, но от фактов, к сожалению, не откажешься никак. Установите «голый» WP и посмотрите расход памяти. После этого поставьте пару тяжелых плагинов и посмотрите снова. Полагаю, мысль «плагины не тормозят сайт» будет уже совсем не той :)

    ОтветитьОтветить
  20. Спасибо за статью, держал ее с моменты выхода в закладках. И вот теперь руки дошли, но вот какой казус получается — яндексовский код не работает.
    Хотя адсенсовский вполне работает.
    Как бы решить проблему?

    ОтветитьОтветить
  21. @Алексей: для начала проверьте код без дополнительной «обертки» из указанной в статье функции — может проблема и не в ней. А кроме того — открывайте консоль и ищите ошибки, если таковые есть — дальше нужно смотреть предметно.

    ОтветитьОтветить
  22. @Алексей: попробуй вначале вставить код яндекса в виджет. Если там работает, тогда что-то не то у тебя. Если это так, то попробуй другую тему включить на сайте или поотключать плагины. У меня довольно часто бывают разные несовместимости плагинов или джаваскрипта одних фишек с другими, но смена темы или отключение плагинов всегда помогает.

    ОтветитьОтветить
  23. @Сергей: так этот же код у меня вставлен просто в single сразу после заголовка и работает.
    Решил попробовать, как Ярослав советовал, не вышло, отложил до лучших времен

    ОтветитьОтветить
  24. Спасибо за решение проблемы, всё быстро понял, теперь вставляю рекламу без плагинов как нечего делать

    ОтветитьОтветить
  25. Во другое дело, а то я свой сайт уже плагинами пичкаю лиж бы рекламу вставить в то или иное место. Тут хоть понял как без них обойтись. Материал поленый, спасибо ))

    ОтветитьОтветить
  26. @Igor:
    Ну плагином лучше, потом когда много статей руками не поменяешь что бы потестить что-то

    ОтветитьОтветить
  27. Спасибо за шикарный способ, получилось всё с первого раза и как раз так, как требовал заказчик. Теперь придется еще 2 блога переделывать по вашему методу\способу :)

    ОтветитьОтветить
  28. Долго искал ответ перед тем как наткнулся на вашу статью. Спасибо! Спаситель!

    ОтветитьОтветить
  29. Огромное спасибо автору, все получилось!

    ОтветитьОтветить
  30. Спасибо огромное за статью! Информативно, полезно, долго искал, как реализовать данную фишку.

    ОтветитьОтветить
  31. Спасибо за статью! На своем втором блоге пользовался плагинами, теперь попробую этот метод, может он будет лучше.

    ОтветитьОтветить
  32. Отличный рабочий способ.
    Конечно, некоторых отпугнет различные ручные манипуляции и эти люди выберут старый способ — плагин.

    ОтветитьОтветить
  33. Ну для рекламы в адсенсе надо уж постараться с посетителями

    ОтветитьОтветить
  34. Здравствуйте. За столь полезный материал благодарю. Но есть один вопрос. Подскажите, почему рекламный блок при добавлении между анонсами на главной странице показывается со смещением. Получается, что желтый фон, который я к счастью нашел как убрать, и картинка рекламы не находятся на одном месте. Хотя занимают одинаковую площадь. Задавал вопросы на форумах, ответов адекватных не следует. Может Вы подскажете где искать причину. С уважением

    ОтветитьОтветить
  35. @Олег: навскидку — скорее всего на блок влияет какой-то стиль в CSS. Открывайте в Chrome (к примеру) «Инструменты разработчика» и смотрите какие стили влияют на блок.

    ОтветитьОтветить
  36. Спасибо, отличная статья!
    только недавно достиг 300 уников на первом сайте, как раз тема актуальная :) Плагинов и так навешано куча, не хочется еще один…

    ОтветитьОтветить
  37. А сколько посетителей нужна для того чтобы поставить рекламу от адсенс

    ОтветитьОтветить
  38. Как я понял, вы имеете ввиду вставку рекламного блока в середине самой статьи после тега more? Править functions.php решение правильное, но не всегда уместное. Такое решение подходит в тех случаях, когда рекламный код везде один и тот же. В ином случае придётся вставлять код непосредственно в саму статью. Кстати, и для одинакового рекламного кода такой вариант (вставка непосредственно в статью) так же удобен тем, что в тех случаях, когда рекламу надо разместить только в определённых статьях, вы никогда не запутаетесь с ID нужной статьи.

    ОтветитьОтветить
  39. @Пётр: не вижу смысла вставлять разные коды в разных статьях. А запутаться с ID статьи… даже не знаю как это сделать, он же выводится даже в URL :)

    ОтветитьОтветить
  40. @Yaroslav.CH: Смысл иногда есть. К примеру, в статье об одежде можно вставить рекламу магазина одежды, а в статье про электронику, соответственно, рекламу магазина электроники. А запутаться с ID проще простого из-за банальной невнимательности. Кстати, например у меня ID в УРЛе не выводится, так что пришлось бы специально отдельно лезть и смотреть. А при смене или изменении статей (пусть это и бывает очень и очень редко) как раз и вылезет ошибка.

    ОтветитьОтветить
  41. @Пётр:
    К примеру, в статье об одежде можно вставить рекламу магазина одежды, а в статье про электронику, соответственно, рекламу магазина электроники.
    Похоже, мы говорим о разном формате рекламы. В статье речь идет по большей части про Adsense, там нет возможности выбирать тематику под каждую статью. Если же Вы имеете ввиду отдельный баннер — то тогда автоматическая вставка Вам попросту не нужна.

    Кстати, например у меня ID в УРЛе не выводится
    Авторизуйтесь, откройте любую статью и наведите на ссылку «Редактировать запись» в шапке админ-панели. Там и будет ID: [ваш-домен]/wp-admin/post.php?post=[ID-статьи]&action=edit

    ОтветитьОтветить
  42. Здравствуйте! Хотел бы уточнить по тегу more. Я его использую для того, чтобы написать уникальный анонс к статье.

    Я правильно понимаю, что в этом случае у меня после тега more будет реклама и она будет отображаться фактически перед началом статьи? Либо же логика в том, что тег more можно вставлять где угодно и после него автоматически будет отображаться реклама?

    Прошу прощения за вопрос, просто я не занимался монетизацией своего блога. Эта мысль пришла совсем недавно)

    ОтветитьОтветить
  43. @Сергей: не совсем понятен вопросы. Если вы используете стандартное поведение для more, то реклама будет отображаться на странице с полным текстом статьи, после анонса.
    Схематически:

    • анонс (выводится как на странице категории, так и на странице с полным текстом статьи)
    • тег more / реклама
    • полный текст статьи (без анонса).
    ОтветитьОтветить
  44. @Yaroslav.CH:

    Ярослав, добрый день! У меня анонс выводится только на странице категории. Текста анонса на странице статьи у меня нет. Получается, если я в админке ставлю текст, потом ставлю тег more (то есть текст выше more у меня «улетает» в анонс), то у меня страница с полным текстом статьи начинается с рекламы, верно?

    С уважением,
    Сергей

    ОтветитьОтветить
  45. @Сергей: посмотрел Ваш блог. Да, у вас анонс сделан отдельно от статьи, то есть на самой странице со статьей его нет. Если эта настройка сделана через more (и никаких других изменений не вносилось), то по логике — да, полный текст статьи должен начинаться с рекламы.
    Самый простой вариант — возьмите код из статьи и вместо «// здесь будет код Adsense или любой другой рекламный блок» — вставьте любую картинку/текст, чтобы понять — где именно он выводится.
    Оптимальнее всего делать это, само собой, на тестовой версии блога.

    ОтветитьОтветить
  46. Благодарю за информацию. Стараюсь чтобы плагинов как можно меньше было на блоге, поэтому ваша статья мне как раз к месту пригодилась. Буду следить за новыми статьями сайта.

    ОтветитьОтветить
  47. Я пробовала привязывать рекламу к тегу заголовка или more, мне показался такой способ не очень универсальным. Рекамный блок не всегда вписывается в контекст.

    Я просто расставляю в статье пустые дивы с определенным слассом и к ним привязываю рекламу, то есть при написании статьи я сразу определяю в каким месте будет рекламный блок и как он будет смотреться.

    ОтветитьОтветить
  48. @Ольга: очень интересно, расскажите, как это привязывать? или может, писали уже где?

    ОтветитьОтветить
  49. А не лучше ли использовать шорткод? В этом случае, рекламу можно разместить не только под тегом, но и в любом месте. Это актуально, если статья довольно большого объема: 10-15 тысяч знаков и множество картинок.

    ОтветитьОтветить
  50. @Ян: предложенный в статье способ подразумевает автоматизацию процесса размещения. Если вам удобнее расставлять код вручную, то тогда и в шорткоде нет особого смысла — можно просто использовать чистый код рекламного блока.

    ОтветитьОтветить
  51. Как бы вы реализовали запрет показа рекламы в определенных статьях после тега more?

    ОтветитьОтветить
  52. @Yaroslav.CH:
    В записях все сработало, но пошел косяк на страницах — стал выводится рекламный блок после заголовка h1, h2…
    Возможно, тема не подходит. Но за ответ спасибо))

    ОтветитьОтветить
  53. @К: странно, вывод на страницах определяется через отдельный файл шаблона page.php.

    ОтветитьОтветить

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *


Срок проверки reCAPTCHA истек. Перезагрузите страницу.