wplearn.ru wordpress WP Learn

Создаем собственный шорткод в WordPress: подробное руководство с примерами

Шорткоды в WordPress — это мощный инструмент, позволяющий вставлять в контент динамический и сложный функционал простым тегом. Если вы хотите расширить возможности своего сайта на базе WordPress, создание собственных шорткодов — отличный способ сделать это без необходимости править темы или плагины напрямую.

Что такое шорткод в WordPress и зачем он нужен

Шорткод — это специальный тег в квадратных скобках, например, [wplearn_example], который WordPress заменяет на определенный код или вывод во время формирования страницы. Это позволяет:

  • Легко добавлять сложный HTML, PHP или JavaScript в записи и страницы
  • Повторно использовать блоки кода без дублирования
  • Скрывать техническую реализацию от контент-редакторов

Стандартные шорткоды идут с некоторыми плагинами и темами, но зачастую потребности сайта уникальны — поэтому стоит создавать свои.

Создание собственного шорткода: пример от wplearn

Рассмотрим как создать простой шорткод, который выводит текущую дату в заданном формате. Начнем с базового кода, который нужно добавить в файл functions.php вашей темы или в отдельный плагин.

function wplearn_current_date_shortcode($atts) {
    $atts = shortcode_atts(
        array('format' => 'd.m.Y'), // формат даты по умолчанию
        $atts,
        'wplearn_current_date'
    );
    return date($atts['format']);
}
add_shortcode('wplearn_current_date', 'wplearn_current_date_shortcode');

Теперь в любом месте контента можно написать [wplearn_current_date] и получить дату в формате день.месяц.год, например, 25.04.2024.

Если нужно изменить формат, указываем атрибут, например: [wplearn_current_date format="Y-m-d"] — и будет выведено 2024-04-25.

Разбор кода шорткода

Функция wplearn_current_date_shortcode принимает массив атрибутов $atts, который мы обрабатываем с помощью shortcode_atts — это стандартный способ задать значения по умолчанию и объединить их с пользовательскими.

Далее функция возвращает строку с текущей датой, отформатированной по переданному шаблону. В конце с помощью add_shortcode регистрируем шорткод по имени wplearn_current_date.

Как добавить параметры и вложенный контент в шорткод

Шорткод может принимать не только атрибуты, но и содержать вложенный контент. Например, создадим шорткод, который оборачивает текст в стилизованный блок с произвольным цветом фона.

function wplearn_box_shortcode($atts, $content = null) {
    $atts = shortcode_atts(
        array('color' => '#f0f0f0'),
        $atts,
        'wplearn_box'
    );
    return '<div style="background-color:' . esc_attr($atts['color']) . '; padding: 15px; border-radius: 5px;">' . do_shortcode($content) . '</div>';
}
add_shortcode('wplearn_box', 'wplearn_box_shortcode');

Использование в контенте:

[wplearn_box color="#aee1f9"]Это важное уведомление![/wplearn_box]

Этот шорткод создаст голубой блок с текстом внутри. Благодаря вызову do_shortcode($content) внутри функции, вы можете даже вкладывать другие шорткоды внутрь.

Практические советы по работе с шорткодами

Обработка безопасности и очистка данных

Всегда учитывайте, что атрибуты шорткода могут содержать пользовательские данные. Используйте функции esc_attr(), esc_html() и подобные для экранирования, чтобы предотвратить XSS-уязвимости.

Кеширование результатов шорткодов

Если шорткод выполняет тяжелые операции (запросы к базе, API), рассмотрите возможность кешировать результат, например, через Transients API, чтобы уменьшить нагрузку.

Отладка и тестирование шорткодов

Тестируйте шорткоды в разных местах сайта: в записях, виджетах, в блоке «HTML» редактора Gutenberg. Для отладки используйте error_log и WP_DEBUG.

Популярные плагины для работы с шорткодами

Если не хотите писать код вручную, можно использовать плагины, которые расширяют функциональность шорткодов:

  • Shortcodes Ultimate — огромный набор готовых шорткодов с удобным интерфейсом.
  • WP Shortcode — легкий плагин с базовыми элементами.
  • Custom Content Shortcode — позволяет создавать пользовательские шорткоды без программирования.

Но зачастую для точного соответствия задачам лучше сделать свой код — это гарантия гибкости и контроля.

Пример сложного шорткода для вывода последних записей с миниатюрами

Создадим шорткод, который выводит последние 3 записи с миниатюрами и ссылками на них. Это полезно для боковой панели или в конце статей.

function wplearn_latest_posts_shortcode($atts) {
    $atts = shortcode_atts(array('count' => 3), $atts, 'wplearn_latest_posts');
    $query = new WP_Query(array(
        'posts_per_page' => intval($atts['count']),
        'post_status' => 'publish'
    ));
    if(!$query->have_posts()) return '<p>Нет записей для отображения.</p>';

    $output = '<div class="wplearn-latest-posts"><ul>';
    while($query->have_posts()) {
        $query->the_post();
        $thumb = has_post_thumbnail() ? get_the_post_thumbnail(get_the_ID(), 'thumbnail') : '<img src="' . esc_url(get_template_directory_uri() . '/images/no-image.png') . '" alt="no image" />';
        $output .= '<li><a href="' . get_permalink() . '" title="' . esc_attr(get_the_title()) . '">' . $thumb . '<br>' . get_the_title() . '</a></li>';
    }
    wp_reset_postdata();
    $output .= '</ul></div>';
    return $output;
}
add_shortcode('wplearn_latest_posts', 'wplearn_latest_posts_shortcode');

Используйте шорткод в записи: [wplearn_latest_posts count="5"] — и выведется 5 последних записей с миниатюрами.

Заключение по теме шорткодов

Создание собственных шорткодов — простой и эффективный способ расширить функциональность WordPress без сложных изменений в шаблонах. С помощью PHP и встроенных функций WordPress вы можете создавать любые динамические элементы, управлять выводом и стилизацией, а также делать сайт более удобным для редакторов.

Обязательно тестируйте шорткоды на разных типах контента, используйте безопасность и оптимизацию, и не забывайте, что хорошо продуманный шорткод — залог удобной и гибкой CMS.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше