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

|

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

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

Шорткод — это короткая метка в квадратных скобках, например [wpreboot_gallery], которая при отображении сайта автоматически заменяется на динамический контент. Это упрощает работу с контентом: вместо копирования большого HTML или PHP кода, вы просто вставляете шорткод.

Основные преимущества шорткодов:

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

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

Для создания шорткода нужно написать функцию, которая будет формировать нужный вывод, и зарегистрировать её с помощью функции add_shortcode. Обычно код добавляют в файл functions.php вашей темы или создают отдельный плагин.

Пример создания простого шорткода, который выводит приветствие:

function wpreboot_hello_shortcode($atts) {
    $atts = shortcode_atts(array(
        'name' => 'Гость'
    ), $atts, 'wpreboot_hello');

    return '<p>Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на сайт.</p>';
}
add_shortcode('wpreboot_hello', 'wpreboot_hello_shortcode');

Теперь в любом месте контента вы можете использовать [wpreboot_hello name="Алексей"], и на сайте выведется: Привет, Алексей! Добро пожаловать на сайт.

Опции и атрибуты шорткода — как передавать параметры

Очень часто шорткоду нужно передавать параметры, чтобы изменять вывод. Как в примере выше, мы использовали функцию shortcode_atts, которая объединяет переданные атрибуты с дефолтными значениями.

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

function wpreboot_recent_posts_shortcode($atts) {
    $atts = shortcode_atts(array(
        'count' => 5,
        'category' => ''
    ), $atts, 'wpreboot_recent_posts');

    $args = array(
        'posts_per_page' => intval($atts['count']),
        'post_status' => 'publish'
    );

    if (!empty($atts['category'])) {
        $args['category_name'] = sanitize_text_field($atts['category']);
    }

    $posts = get_posts($args);

    if (empty($posts)) {
        return '<p>Записей не найдено.</p>';
    }

    $output = '<ul>';
    foreach ($posts as $post) {
        $output .= '<li><a href="' . get_permalink($post) . '">' . esc_html(get_the_title($post)) . '</a></li>';
    }
    $output .= '</ul>';

    return $output;
}
add_shortcode('wpreboot_recent_posts', 'wpreboot_recent_posts_shortcode');

Этот шорткод можно использовать так: [wpreboot_recent_posts count="3" category="news"], и он выведет 3 последние записи из категории "news".

Примеры полезных пользовательских шорткодов

1. Шорткод для вывода контактной информации

Вы можете создать шорткод, который выводит контакты с возможностью менять номер телефона или email через атрибуты:

function wpreboot_contact_shortcode($atts) {
    $atts = shortcode_atts(array(
        'phone' => '+7 (999) 123-45-67',
        'email' => 'info@example.com'
    ), $atts, 'wpreboot_contact');

    return '<div class="contact-info">'
        . '<p>Телефон: <a href="tel:' . esc_attr($atts['phone']) . '">' . esc_html($atts['phone']) . '</a></p>'
        . '<p>Email: <a href="mailto:' . esc_attr($atts['email']) . '">' . esc_html($atts['email']) . '</a></p>'
        . '</div>';
}
add_shortcode('wpreboot_contact', 'wpreboot_contact_shortcode');

Используйте в контенте: [wpreboot_contact phone="+7 (912) 345-67-89" email="contact@site.ru"].

2. Встраиваем Google карту через шорткод

Если нужно вставить карту с определённым адресом, можно сделать так:

function wpreboot_google_map_shortcode($atts) {
    $atts = shortcode_atts(array(
        'address' => 'Москва, Красная площадь',
        'width' => '600',
        'height' => '450'
    ), $atts, 'wpreboot_map');

    $address = urlencode($atts['address']);
    $width = intval($atts['width']);
    $height = intval($atts['height']);

    $iframe = '<iframe src="https://www.google.com/maps?q=' . $address . '&output=embed" width="' . $width . '" height="' . $height . '" style="border:0;" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe>';

    return $iframe;
}
add_shortcode('wpreboot_map', 'wpreboot_google_map_shortcode');

Вставляйте в контент: [wpreboot_map address="Санкт-Петербург, Невский проспект" width="800" height="600"].

Советы по безопасности и производительности при создании шорткодов

При работе с шорткодами важно учитывать несколько правил:

Как превратить шорткод в плагин для WordPress

Если вы хотите, чтобы ваш шорткод был независим от темы и мог использоваться на любом сайте, лучше оформить его в виде плагина. Для этого создайте папку в wp-content/plugins, например wpreboot-shortcodes, и файл wpreboot-shortcodes.php с таким содержимым:

<?php
/**
 * Plugin Name: WPreboot Shortcodes
 * Description: Набор кастомных шорткодов для сайта WPreboot
 * Version: 1.0
 * Author: WPreboot
 */

function wpreboot_hello_shortcode($atts) {
    $atts = shortcode_atts(array('name' => 'Гость'), $atts, 'wpreboot_hello');
    return '<p>Привет, ' . esc_html($atts['name']) . '!</p>';
}
add_shortcode('wpreboot_hello', 'wpreboot_hello_shortcode');

// Добавляйте другие шорткоды здесь

Затем активируйте плагин через админку WordPress. Теперь ваши шорткоды будут работать независимо от активной темы.

Итоги и рекомендации

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

Как использовать хуки для контроля корзины WooCommerce: практическое руководство
17.04.2026
Как использовать REST API WordPress для запроса пользователей по мета-полям
13.04.2026
Как создать подписку на email в WordPress без плагинов: практическое руководство
21.11.2025
Создаем собственный виджет в WordPress на PHP: подробное руководство
05.11.2025
Как создать автоматический отчет по ошибкам в WordPress с помощью плагина
27.12.2025
×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙