
В этой заметке покажу, как вывести рекламные блоки РСЯ сразу в нескольких местах записи блога (сайта) на WordPress. Проще, конечно, это сделать при помощи плагина, коих в репозитории Вордпресс имеется достаточно много.
Если же по какой-то причине нет желания использовать плагин, такую возможность можно легко реализовать при помощи PHP-кода, не прибегая к официальным плагинам. В данном конкретном случае, предлагаю разместить блоги здесь: перед текстом записи, в её середине, после текста, после второго заголовка H2, если он, конечно, есть в записи.
Для этого можно использовать фильтры и хуки WordPress. Ниже приведен пример кода, который можно добавить в файл functions.php рабочей темы сайта, если вы уже прошли модерацию в Рекламной сети Яндекса и готовы транслировать на своей площадке рекламу.
Пример кода
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 33 34 35 36 37 38 39 40 41 42 |
// Функция для добавления рекламного кода в записи function insert_ad_code($content) { // Адреса рекламного кода: $ad_before = '<div class="ad-code">ЗДЕСЬ КОД РЕКЛАМЫ</div>'; //(перед текстом записи) $ad_after = '<div class="ad-code">ЗДЕСЬ КОД РЕКЛАМЫ</div>'; //(после текста записи) $ad_middle = '<div class="ad-code">ЗДЕСЬ КОД РЕКЛАМЫ</div>'; //(в середине записи) $ad_after_h2 = '<div class="ad-code">ЗДЕСЬ КОД РЕКЛАМЫ</div>'; //(после второго H2) // Вставка кода перед текстом записи $content = $ad_before . $content; // Вставка кода в середину текста записи $blocks = explode('</p>', $content); $total_blocks = count($blocks); if ($total_blocks > 2) { // Убедимся, что есть как минимум два параграфа // Вычисляем индекс для вставки в середину $middle_index = floor($total_blocks / 2); // Вставляем код в середину $blocks[$middle_index] .= $ad_middle; } $content = implode('</p>', $blocks); // Вставка кода после текста записи $content .= $ad_after; // Поиск второго заголовка H2 и вставка кода после него preg_match_all('/<h2[^>]*>(.*?)<\/h2>/', $content, $matches); if (isset($matches[0][1])) { // Находим позицию второго H2 $content = str_replace($matches[0][1], $matches[0][1] . $ad_after_h2, $content); } return $content; } // Подключаем функцию к фильтру контента add_filter('the_content', 'insert_ad_code'); |
Объяснение кода
Теперь подробно разберём этот код, который вставляет рекламные блоки в записи WordPress. Рассмотрим каждую часть кода и объясним, как она работает.
Общая структура функции
Функция insert_ad_code предназначена для добавления рекламного кода в контент записей. Она принимает содержимое записи в качестве аргумента и возвращает измененное содержимое с добавленными рекламными блоками.
Код функции
1 |
function insert_ad_code($content) { |
$content: Это переменная, которая содержит HTML-код содержимого записи.
Определение рекламных блоков
1 2 3 4 |
$ad_before = '<div class="ad-code">ЗДЕСЬ КОД РЕКЛАМЫ</div>'; //(перед текстом записи) $ad_after = '<div class="ad-code">ЗДЕСЬ КОД РЕКЛАМЫ</div>'; //(после текста записи) $ad_middle = '<div class="ad-code">ЗДЕСЬ КОД РЕКЛАМЫ</div>'; //(в середине записи) $ad_after_h2 = '<div class="ad-code">ЗДЕСЬ КОД РЕКЛАМЫ</div>'; //(после второго H2) |
— Здесь определяем переменные с HTML-кодом рекламных блоков. Эти переменные можно заменить на реальный код рекламы.
Вставка кода перед текстом записи
1 |
$content = $ad_before . $content; |
— Этот код добавляет рекламный блок перед основным содержимым записи. Он просто объединяет $ad_before с $content.
Вставка кода в середину текста записи
1 2 |
$blocks = explode('</p>', $content); $total_blocks = count($blocks); |
— в первой строке: Разделяем содержимое на массив блоков, где каждый блок заканчивается тегом /p. Это позволяет работать с параграфами отдельно.
— во второй строке: Считает общее количество параграфов.
1 2 3 4 |
if ($total_blocks > 2) { $middle_index = floor($total_blocks / 2); $blocks[$middle_index] .= $ad_middle; } |
— Если в записи больше двух параграфов, вычисляется индекс среднего параграфа, и рекламный блок добавляется к этому параграфу.
1 |
$content = implode('</p>', $blocks); |
— Объединяет массив параграфов обратно в строку, добавляя закрывающий тег p между ними.
Вставка кода после текста записи
1 |
$content .= $ad_after; |
— Этот код добавляет рекламный блок в конце содержимого записи.
Вставка кода после второго заголовка H2
1 |
preg_match_all('/<h2[^>]*>(.*?)<\/h2>/', $content, $matches); |
— Используется регулярное выражение для поиска всех заголовков H2 в содержимом. Метод preg_match_all возвращает массив всех найденных заголовков.
1 2 3 |
if (isset($matches[0][1])) { $content = str_replace($matches[0][1], $matches[0][1] . $ad_after_h2, $content); } |
— Если найден хотя бы один заголовок H2, то код вставляет рекламный блок сразу после второго заголовка H2. Здесь используется str_replace для замены второго заголовка на тот же заголовок с добавленным рекламным блоком.
Возврат измененного содержимого
1 2 |
return $content; } |
— Функция возвращает измененное содержимое, которое теперь включает рекламные блоки.
Подключение функции к фильтру контента
1 |
add_filter('the_content', 'insert_ad_code'); |
— Этот код подключает вашу функцию к фильтру the_content. Это означает, что функция будет автоматически вызываться каждый раз, когда WordPress выводит содержимое записи.
Этот код эффективно добавляет рекламные блоки в записи WordPress в нескольких местах: перед текстом, в середине, после текста и после второго заголовка H2. Можно настроить содержимое рекламных блоков, заменив строки с «ЗДЕСЬ КОД РЕКЛАМЫ» на реальный код рекламы.
Использование
Все очень просто:
- Откройте файл functions.php вашей темы.
- Скопируйте и вставьте приведенный выше код.
- Замените «ЗДЕСЬ КОД РЕКЛАМЫ» на фактический код рекламы РСЯ.
Всем WEB!