Как создать собственный шорткод в WordPress

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

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

Шорткод — это специальный тег в квадратных скобках, например [wporg_example], который WordPress заменяет на определённый контент или функционал во время вывода страницы. Это позволяет создавать динамические блоки контента, такие как формы, галереи, списки и прочее, без необходимости вручную писать HTML или PHP каждый раз.

Использование шорткодов повышает удобство редактирования сайта и позволяет централизованно управлять часто повторяющимися элементами. Для разработчиков — это возможность инкапсулировать логику и облегчить поддержку кода.

Как создать собственный шорткод в WordPress — базовый пример

Для начала давайте создадим простой шорткод, который выводит приветственное сообщение. Для этого добавим код в файл functions.php вашей темы или в собственный плагин.

function wporg_shortcode_hello_world() {
    return '<p>Привет, это мой собственный шорткод!</p>';
}
add_shortcode('wporg_hello', 'wporg_shortcode_hello_world');

Теперь в любом месте контента, где вы вставите [wporg_hello], появится сообщение «Привет, это мой собственный шорткод!».

Важно использовать уникальные префиксы для функций (например, wporg_), чтобы избежать конфликтов с другими плагинами или темами.

Объяснение кода

Функция wporg_shortcode_hello_world возвращает HTML-строку. Функция add_shortcode связывает название шорткода wporg_hello с этой функцией, благодаря чему WordPress заменит тег на результат вызова функции.

Шорткод с параметрами — как передавать данные

Часто нужно создавать шорткоды, которые принимают параметры для гибкости. Например, шорткод, который выводит текст с заданным цветом.

function wporg_shortcode_colored_text($atts, $content = null) {
    $atts = shortcode_atts(
        array(
            'color' => 'black',
        ), $atts, 'wporg_colored_text'
    );
    return '<span style="color:' . esc_attr($atts['color']) . '">' . esc_html($content) . '</span>';
}
add_shortcode('wporg_colored_text', 'wporg_shortcode_colored_text');

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

[wporg_colored_text color="red"]Этот текст будет красным[/wporg_colored_text]

В этом примере функция принимает параметры через массив $atts и обрабатывает содержимое между тегами шорткода через $content. Функция shortcode_atts устанавливает значения по умолчанию.

Советы по безопасности и фильтрации

Обязательно используйте функции esc_attr и esc_html для экранирования данных, чтобы избежать XSS-уязвимостей. Не выводите данные напрямую без проверки.

Примеры полезных шорткодов для WordPress

1. Вывод списка последних записей

function wporg_shortcode_latest_posts($atts) {
    $atts = shortcode_atts(
        array(
            'count' => 5,
        ), $atts, 'wporg_latest_posts'
    );
    $query = new WP_Query(array(
        'posts_per_page' => intval($atts['count']),
        'post_status' => 'publish',
    ));
    if (!$query->have_posts()) {
        return '<p>Записи не найдены.</p>';
    }
    $output = '<ul>';
    while ($query->have_posts()) {
        $query->the_post();
        $output .= '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
    }
    wp_reset_postdata();
    $output .= '</ul>';
    return $output;
}
add_shortcode('wporg_latest_posts', 'wporg_shortcode_latest_posts');

Используйте [wporg_latest_posts count="3"], чтобы вывести последние 3 записи.

2. Вывод текущей даты и времени

function wporg_shortcode_current_datetime() {
    return '<time>' . date('d.m.Y H:i') . '</time>';
}
add_shortcode('wporg_current_datetime', 'wporg_shortcode_current_datetime');

Шорткод [wporg_current_datetime] покажет дату и время на момент генерации страницы.

Как отладить и тестировать шорткоды

Для отладки шорткодов используйте следующие методы:

  • Добавляйте error_log в функции для записи в лог PHP.
  • Выводите временные сообщения с помощью var_dump или print_r внутри функций.
  • Проверяйте правильность синтаксиса и экранирования.
  • Тестируйте с разными параметрами.

Если шорткод не работает, убедитесь, что он зарегистрирован до того, как WordPress обработает контент (обычно это происходит на хуке init).

Рекомендации по оптимизации и безопасности шорткодов

Шорткоды могут влиять на производительность сайта, поэтому важно:

  • Минимизировать количество запросов к базе данных внутри шорткода.
  • Кэшировать результаты, если вывод не меняется часто.
  • Использовать проверку прав доступа, если шорткод выводит конфиденциальную информацию.
  • Использовать подготовленные запросы и функции WordPress для защиты от SQL-инъекций.

Также избегайте вывода больших объёмов данных без пагинации, чтобы не замедлять загрузку страниц.

Скачать WP с оф. сайта Магазин проверенных платных тем