Иногда нам нужно добавить текст, социальные кнопки без плагина, рекламный блок или форму подписки до или после содержания каждой статьи в WordPress. Желательно добавить так, чтобы при обновлении темы ничего не исчезло. Поэтому, вставляйте код не в файл functions.php, а при помощи любого плагина способного подключать фрагменты кода к вашей теме. Для этих целей отлично подходит плагин Code Snippets.
Добавление содержимого перед the_content на примере виджета-переводчика
Для начала определимся, на каких страницах мы будем выводить наши блоки. Приведу пример добавления виджета Яндекс «Переводчик для сайтов».
На сайте Яндекс я получила скрипт виджета, который подключу в футер темы таким образом:
/* Добавляем в футер виджет Яндекс-переводчик */
add_action('wp_footer', 'webkato_add_ya_translater_footer');
function webkato_add_ya_translater_footer(){
?>
<script src="https://translate.yandex.net/website-widget/v1/widget.js?widgetId=ytWidget&pageLang=ru&widgetTheme=light&autoMode=false" type="text/javascript"></script>
<?php
};
Если виджет будет выводится только на странице записей, то в функции добавим условный тег is_single. Вставляю код <div id=«ytWidget»></div> до содержимого поста при помощи переменной $beforecontent. Таким образом можно вставить любое другое содержимое.
/* Выводим виджет Яндекс-переводчик перед контентом */
add_filter('the_content', 'webkato_before_content');
function webkato_before_content($content) {
if(is_single()) {
$beforecontent = '<div id="ytWidget"></div>';
$fullcontent = $beforecontent . $content;
} else {
$fullcontent = $content;
}
return $fullcontent;
}
Проверяю страницы записей. Виджет на месте, как раз перед статьей.

Если вам необходимо вывести содержимое на всех страницах, уберите условные теги.
Содержимое до и после статьи в одной функции
Чтобы добавить текст в самый конец поста, замените переменную $beforecontent на $aftercontent. Для вывода обеих переменных воспользуемся следующей функцией:
add_filter('the_content', 'webkato_before_after');
function webkato_before_after($content) {
if(is_page() || is_single()) {
$beforecontent = 'Содержимое в самом начале статьи на страницах и в записях';
$aftercontent = 'Содержимое в конце статьи на страницах и в записях.';
$fullcontent = $beforecontent . $content . $aftercontent;
} else {
$fullcontent = $content;
}
return $fullcontent;
}
Рандомное отображение содержимого до и после статьи
Иногда требуется вывести содержимое сменяющееся случайным образом при перезагрузке страницы. Тогда воспользуйтесь этой функцией:
add_filter('the_content', 'webkato_before_after');
function webkato_before_after($content) {
if(is_page() || is_single()) {
$rand1 = rand(0,1);
$rand2 = rand(0,1);
// Если перед статьей
if($rand1 == 1) {
$beforecontent = 'Дорога возникает под шагами идущего.';
} else {
$beforecontent = 'Проблема в том, что, не рискуя, мы рискуем в сто раз больше.';
}
// Если после статьи
if($rand2 == 1) {
$aftercontent = 'Боишься — не делай, делаешь — не бойся, а сделал — не сожалей.';
} else {
$aftercontent = 'Работа возвышает, ее завершение - возвеличивает.';
}
// Output
$fullcontent = $beforecontent . $content . $aftercontent;
} else {
$fullcontent = $content;
}
return $fullcontent;
}
Если вы уверены, что ваша тема больше не будет обновляться, то код можно вставить в файл functions.php. Не забудьте сделать бэкап перед изменениями.
⚠️ Так как WordPress и его плагины могут изменяться, тестируйте любой кастомный код на промежуточном веб-сайте перед переходом в рабочую среду.
