В этой статье разберём, как создать собственную настройку в панели администратора WordPress, которая позволит менять заголовки страниц или записей без прямого редактирования шаблонов. Такой подход полезен, если нужно дать заказчику или редактору возможность легко управлять заголовками через удобный интерфейс.
Почему стоит создавать кастомные настройки заголовков
Стандартные заголовки в WordPress задаются в редакторе записи или страницы. Но иногда требуется более гибкое управление, например, возможность добавлять префиксы, суффиксы, менять стили заголовка или выводить динамические данные. Если делать это через код шаблона, то не каждый пользователь сможет изменить настройки. Создание панели настроек в админке решает эту проблему.
Так вы сможете централизованно управлять заголовками, добавлять условия вывода и делать их более уникальными и SEO-дружественными.
Создаём страницу настроек в админке WordPress
Для начала зарегистрируем страницу настроек. Добавим в файл functions.php вашей темы или в плагин следующий код:
function wpbook_add_title_settings_page() {
add_menu_page(
'Настройки заголовков',
'Заголовки',
'manage_options',
'wpbook-title-settings',
'wpbook_title_settings_page_html',
'dashicons-edit',
80
);
}
add_action('admin_menu', 'wpbook_add_title_settings_page');
Эта функция создаст новую страницу в меню админки с названием «Заголовки».
Вывод формы настройки
Теперь нужно реализовать функцию wpbook_title_settings_page_html, которая выведет форму для ввода настроек:
function wpbook_title_settings_page_html() {
if (!current_user_can('manage_options')) {
return;
}
// Сохраняем настройки при отправке формы
if (isset($_POST['wpbook_title_prefix'])) {
check_admin_referer('wpbook_title_settings_save', 'wpbook_title_nonce');
update_option('wpbook_title_prefix', sanitize_text_field($_POST['wpbook_title_prefix']));
update_option('wpbook_title_suffix', sanitize_text_field($_POST['wpbook_title_suffix']));
echo '<div class="updated">Настройки сохранены.</div>';
}
$prefix = get_option('wpbook_title_prefix', '');
$suffix = get_option('wpbook_title_suffix', '');
?>
<div class="wrap">
<h1>Настройки заголовков</h1>
<form method="post" action="">
<?php wp_nonce_field('wpbook_title_settings_save', 'wpbook_title_nonce'); ?>
<table class="form-table" role="presentation">
<tr>
<th scope="row"><label for="wpbook_title_prefix">Префикс заголовка:</label></th>
<td><input name="wpbook_title_prefix" type="text" id="wpbook_title_prefix" value="<?php echo esc_attr($prefix); ?>" class="regular-text" /></td>
</tr>
<tr>
<th scope="row"><label for="wpbook_title_suffix">Суффикс заголовка:</label></th>
<td><input name="wpbook_title_suffix" type="text" id="wpbook_title_suffix" value="<?php echo esc_attr($suffix); ?>" class="regular-text" /></td>
</tr>
</table>
<input type="submit" class="button button-primary" value="Сохранить" />
</form>
</div>
<?php
}
В форме можно задать текст, который будет добавляться перед и после заголовка каждой записи.
Как использовать настройки для изменения заголовков на сайте
Теперь, когда у нас есть сохранённые настройки, нужно применить их к заголовкам в выводе шаблонов. Для этого используем фильтр the_title.
function wpbook_custom_title_filter($title, $post_id = null) {
if (is_admin()) {
// Не меняем заголовки в админке
return $title;
}
$prefix = get_option('wpbook_title_prefix', '');
$suffix = get_option('wpbook_title_suffix', '');
if ($post_id) {
$post_type = get_post_type($post_id);
if ($post_type === 'post' || $post_type === 'page') {
return $prefix . $title . $suffix;
}
}
return $title;
}
add_filter('the_title', 'wpbook_custom_title_filter', 10, 2);
Такой фильтр добавит префикс и суффикс к заголовкам записей и страниц на фронтенде сайта, не затрагивая админку.
Расширение функционала: динамические данные и условные настройки
Можно усложнить настройку, добавив динамические данные в префикс или суффикс, например, текущую дату или категорию записи.
Для этого изменим функцию фильтра:
function wpbook_custom_title_filter_dynamic($title, $post_id = null) {
if (is_admin()) {
return $title;
}
$prefix = get_option('wpbook_title_prefix', '');
$suffix = get_option('wpbook_title_suffix', '');
if ($post_id) {
$post = get_post($post_id);
if ($post->post_type === 'post' || $post->post_type === 'page') {
// Заменим {date} на текущую дату
$prefix = str_replace('{date}', date('d.m.Y'), $prefix);
// Заменим {category} на первую категорию записи
if (has_category('', $post)) {
$cats = get_the_category($post_id);
$cat_name = $cats[0]->name;
$suffix = str_replace('{category}', $cat_name, $suffix);
}
return $prefix . $title . $suffix;
}
}
return $title;
}
remove_filter('the_title', 'wpbook_custom_title_filter', 10);
add_filter('the_title', 'wpbook_custom_title_filter_dynamic', 10, 2);
Теперь в настройках можно писать, например, префикс: [Новое] или {date} — , а суффикс: — {category}, и они будут подставляться автоматически.
Пример использования плагина для упрощения работы с настройками
Если вы хотите не писать код вручную, можно использовать плагин Clearfy Pro, который позволяет создавать свои панели настроек и управлять функциональностью WordPress через удобный интерфейс.
Он поддерживает добавление текстовых опций, которые можно использовать в фильтрах. Это удобный способ быстро внедрить кастомные настройки без глубоких знаний программирования.
Заключение по кастомизации заголовков через настройки
Создание собственной страницы настроек позволяет управлять заголовками более гибко и удобно. Вы можете расширять функционал, добавлять новые поля и условия вывода. Такой подход повышает удобство для пользователей и заказчиков, которые смогут самостоятельно менять заголовки без правки кода.
Код из статьи легко интегрируется в тему или плагин и может быть дополнен под любые задачи, например, интеграцией с SEO-плагинами или мультиязычностью.