Шорткоды в WordPress — это удобный способ добавлять динамический контент в записи, страницы и виджеты без необходимости писать HTML или PHP-код вручную. В этой статье мы разберём, как создать собственный шорткод, который будет выводить данные пользователя, например, имя, email или другую информацию из профиля, а также как его расширить и кастомизировать под свои задачи.
Что такое шорткод в WordPress и зачем он нужен
Шорткод — это специальный тег в квадратных скобках, который WordPress заменяет на заданный контент при выводе страницы. Например, [gallery] вставляет галерею изображений. С помощью шорткодов можно легко добавлять сложный функционал без необходимости писать длинный код в каждом месте.
Для разработчика создание собственного шорткода — отличный способ расширить сайт и сделать функции более доступными редакторам и администраторам, которые не знакомы с программированием.
В нашем случае мы создадим шорткод, который будет выводить информацию текущего пользователя, например, приветствие с его именем или email. Это полезно для сайтов с личным кабинетом, интерактивных страниц и прочего.
Создание простого шорткода для вывода имени пользователя
Начнём с простого примера. Добавим в файл functions.php вашей темы или в собственный плагин следующий код:
function wptemplates_user_greeting_shortcode() {
if ( is_user_logged_in() ) {
$current_user = wp_get_current_user();
return 'Привет, ' . esc_html($current_user->display_name) . '!';
} else {
return 'Привет, гость! Пожалуйста, войдите на сайт.';
}
}
add_shortcode('wptemplates_greeting', 'wptemplates_user_greeting_shortcode');Объяснение кода:
- Функция
wptemplates_user_greeting_shortcodeпроверяет, вошёл ли пользователь в систему. - Если да — получает объект текущего пользователя и выводит его отображаемое имя (display_name), экранируя его для безопасности.
- Если нет — выводит приветствие для гостя.
- Зарегистрирован шорткод с именем
wptemplates_greeting.
Теперь, если вставить в любой пост или страницу [wptemplates_greeting], пользователь увидит персональное приветствие.
Расширение шорткода: вывод произвольных полей пользователя
Часто нужно выводить не только имя, но и дополнительные данные пользователя, например, телефон, адрес или мета-данные, которые вы добавили через пользовательские поля.
Допустим, у вас есть мета-поле пользователя с ключом phone. Добавим его вывод в шорткод с параметрами:
function wptemplates_user_info_shortcode($atts) {
if ( !is_user_logged_in() ) {
return 'Пожалуйста, авторизуйтесь, чтобы увидеть информацию.';
}
$atts = shortcode_atts( array(
'field' => 'display_name', // поле по умолчанию
), $atts, 'wptemplates_user_info' );
$current_user = wp_get_current_user();
switch ($atts['field']) {
case 'email':
return esc_html($current_user->user_email);
case 'phone':
$phone = get_user_meta($current_user->ID, 'phone', true);
return esc_html($phone ? $phone : 'Телефон не задан');
case 'display_name':
default:
return esc_html($current_user->display_name);
}
}
add_shortcode('wptemplates_user_info', 'wptemplates_user_info_shortcode');Теперь в контенте можно использовать шорткод с параметром, например:
[wptemplates_user_info field="email"]— выведет email пользователя.[wptemplates_user_info field="phone"]— выведет телефон из мета-поля.
Добавление поддержки кастомных полей и безопасность данных
Чтобы расширить функционал, можно динамически выводить любые мета-поля пользователя, передавая имя ключа в параметре. Важно проверять и очищать входные данные, чтобы избежать XSS-уязвимостей.
Пример улучшенной функции:
function wptemplates_user_meta_shortcode($atts) {
if ( !is_user_logged_in() ) {
return 'Авторизация необходима для просмотра информации.';
}
$atts = shortcode_atts( array(
'key' => 'display_name'
), $atts, 'wptemplates_user_meta' );
$current_user = wp_get_current_user();
if ($atts['key'] === 'display_name') {
return esc_html($current_user->display_name);
}
$value = get_user_meta($current_user->ID, sanitize_key($atts['key']), true);
if (empty($value)) {
return 'Данные не найдены';
}
return esc_html($value);
}
add_shortcode('wptemplates_user_meta', 'wptemplates_user_meta_shortcode');Теперь вы можете выводить любые мета-данные пользователя через шорткод, например:
[wptemplates_user_meta key="address"][wptemplates_user_meta key="department"]
Примеры полезных плагинов для работы с пользовательскими данными и шорткодами
Если вы хотите упростить работу с пользовательскими профилями и мета-данными, рекомендуем обратить внимание на следующие плагины:
- Advanced Custom Fields (ACF) — позволяет создавать и редактировать произвольные поля для пользователей через удобный интерфейс. Можно использовать вместе с шорткодами.
- User Meta — плагин для управления мета-данными пользователей с поддержкой шорткодов.
- Profile Builder — расширенный редактор профиля с возможностью создания форм регистрации и вывода данных через шорткоды.
Все эти инструменты помогут сделать сайт более интерактивным и удобным для пользователей.
Практические советы по работе с шорткодами и пользовательскими данными
1. Всегда проверяйте, что пользователь авторизован, прежде чем выводить личные данные, чтобы не раскрывать их посторонним.
2. Экранируйте выводимые данные функцией esc_html() или похожими, чтобы избежать XSS-уязвимостей.
3. Для сложных шорткодов лучше создавать отдельные функции, чтобы код был читаемым и поддерживаемым.
4. Тестируйте шорткоды с разными ролями пользователей, чтобы убедиться, что данные показываются корректно.
5. Используйте уникальные префиксы в названиях функций и шорткодов, например, wptemplates_, чтобы избежать конфликтов с другими плагинами и темами.