Для многих разработчиков и владельцев сайтов на WordPress возникает задача организовать вывод текстовой информации в определённом месте шаблона без использования плагинов. Часто нужно добавить кастомные тексты, уведомления или описания, которые можно легко менять через админку, но без установки дополнительных расширений. В этой статье разберём, как реализовать такой функционал с помощью кода, используя стандартные средства WordPress.
Почему стоит отказаться от плагинов для вывода текстов
Плагины удобны, но они могут замедлять сайт, создавать излишнюю нагрузку и конфликты. Если задача сводится к выводу фиксированного текста или нескольких редактируемых полей, лучше реализовать это самостоятельно. Это даёт полный контроль над кодом, гарантирует минимальный вес и повышает безопасность.
Кроме того, самостоятельно реализованное решение проще кастомизировать под конкретные задачи и дизайн.
Создание пользовательского поля для хранения текста в настройках темы
Самый простой способ — добавить кастомное поле через theme customizer. Таким образом, владелец сайта сможет изменять тексты через стандартный интерфейс WordPress.
Добавление секции и поля в кастомайзер
В файл functions.php вашей темы добавьте следующий код:
function wppremium_customize_register_text_output( $wp_customize ) {
// Добавляем секцию
$wp_customize->add_section('wppremium_text_output_section', array(
'title' => 'Главный текст вывода',
'priority' => 30,
));
// Добавляем настройку
$wp_customize->add_setting('wppremium_main_text', array(
'default' => 'Введите здесь основной текст для вывода на сайте',
'sanitize_callback' => 'sanitize_text_field'
));
// Добавляем контрол для ввода текста
$wp_customize->add_control('wppremium_main_text_control', array(
'label' => 'Текст для вывода',
'section' => 'wppremium_text_output_section',
'settings' => 'wppremium_main_text',
'type' => 'textarea'
));
}
add_action('customize_register', 'wppremium_customize_register_text_output');
Данный код создаст новую секцию в кастомайзере с textarea для ввода текста.
Вывод текста в шаблоне
Чтобы вывести текст из кастомайзера, в нужном месте шаблона (например, в header.php или front-page.php) используйте:
echo esc_html(get_theme_mod('wppremium_main_text', ''));
Это выведет очищенный от HTML текст, который администратор указал в настройках темы.
Добавление поддержки HTML и форматирования
Если нужен форматируемый текст (с тегами <p>, <strong> и т.п.), замените sanitize_text_field на более гибкую функцию, например, wp_kses_post и используйте wpautop() при выводе:
$text = get_theme_mod('wppremium_main_text', '');
echo wpautop(wp_kses_post($text));
Это позволит использовать базовое форматирование и защитит от вредоносного кода.
Дополнительное расширение: вывод нескольких текстовых блоков
Если нужно несколько мест с разными текстами, добавьте в кастомайзер дополнительные поля, например, для приветственного сообщения, информации о компании, контактного блока. Разделите их по секциям или настройкам.
Пример кода с несколькими полями
function wppremium_customize_register_multiple_texts( $wp_customize ) {
$wp_customize->add_section('wppremium_texts_section', array(
'title' => 'Текстовые блоки',
'priority' => 35,
));
$fields = [
'welcome_text' => 'Приветственный текст',
'about_text' => 'О компании',
'contact_text' => 'Контактная информация',
];
foreach ($fields as $key => $label) {
$wp_customize->add_setting('wppremium_' . $key, array(
'default' => '',
'sanitize_callback' => 'wp_kses_post',
));
$wp_customize->add_control('wppremium_' . $key . '_control', array(
'label' => $label,
'section' => 'wppremium_texts_section',
'settings' => 'wppremium_' . $key,
'type' => 'textarea'
));
}
}
add_action('customize_register', 'wppremium_customize_register_multiple_texts');
В шаблоне выводите так:
echo wpautop(get_theme_mod('wppremium_welcome_text', ''));
Альтернатива: использование опций WordPress без кастомайзера
Если не хотите использовать кастомайзер, можно хранить тексты в опциях базы данных через функцию update_option() и получать через get_option(). Это подходит для админок с кастомными страницами настроек.
Пример создания страницы настроек в админке
Добавим меню и поле для текста:
function wppremium_add_admin_menu() {
add_menu_page('Настройки текстов', 'Тексты сайта', 'manage_options', 'wppremium_texts', 'wppremium_texts_page');
}
add_action('admin_menu', 'wppremium_add_admin_menu');
function wppremium_texts_page() {
if (isset($_POST['wppremium_main_text'])) {
update_option('wppremium_main_text', wp_kses_post($_POST['wppremium_main_text']));
echo '<div class="updated notice"><p>Настройки сохранены.</p></div>';
}
$text = get_option('wppremium_main_text', '');
?>
<div class="wrap">
<h1>Настройки главного текста</h1>
<form method="post">
<textarea name="wppremium_main_text" rows="10" cols="50" class="large-text"><?php echo esc_textarea($text); ?></textarea>
<br><input type="submit" class="button-primary" value="Сохранить" />
</form>
</div>
<?php
}
Вывод в шаблоне:
echo wpautop(get_option('wppremium_main_text', ''));
Подсказки по безопасности и производительности
Всегда используйте функции очистки данных, такие как sanitize_text_field, wp_kses_post и экранирование вывода (esc_html, esc_textarea, wpautop) для защиты от XSS и ошибок.
Минимизируйте обращения к базе — кэшируйте результаты при необходимости.
Вывод
Таким образом, можно легко и без плагинов организовать вывод настраиваемых текстов через стандартный кастомайзер или собственную страницу настроек. Это улучшит контроль над содержимым и избавит от лишних расширений, что особенно важно для производительности и безопасности сайта.
Если хотите расширить функционал и сделать управление текстами ещё проще, обратите внимание на плагины от WPSHOP, например, Clearfy Pro, который позволяет оптимизировать сайт и добавлять полезные настройки без лишнего кода.