Розробка шорткодів (Shortcodes) для WordPress під ключ

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Розробка шорткодів (Shortcodes) для WordPress під ключ
Простий
від 1 дня до 3 днів
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1359
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1251
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    957
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1188
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    929
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    947

Розробка шорткодів (Shortcodes) для WordPress

Уявіть: клієнт просить додати на сторінку «Акції» блок з останніми записами з категорії «Новини», але він не має доступу до PHP. Або потрібно вставити форму зворотного зв'язку в середину статті, не використовуючи віджети. Без шорткодів довелося б правити шаблони або ставити плагіни з надлишковим функціоналом. Ми розробляємо кастомні шорткоди WordPress, які вирішують такі завдання швидко та без зайвого коду. За роки роботи ми реалізували понад 50 проектів з шорткодами різної складності: від простих кнопок (2–4 атрибути) до інтерактивних галерей з кешуванням та інтеграцією з зовнішніми API. Наша послуга — розробка шорткодів WordPress під ключ. За нашою статистикою, 70% клієнтів обирають шорткоди для зв'язки з конструкторами Elementor та WPBakery, що прискорює розробку в 3 рази порівняно зі створенням повноцінних блоків. Розробка шорткодів WordPress затребувана на 80% комерційних сайтів. Ми гарантуємо безпеку та продуктивність кожного шорткоду. Наші сертифіковані спеціалісти мають досвід більше 10 років у розробці WordPress. Вартість розробки простого шорткода — від 500 грн, складного — від 2000 грн. Порівняно з купівлею преміум-плагіна (наприклад, за 3000 грн), замовлення індивідуального шорткода коштує 1500 грн, що економить 50% бюджету. Середній час виконання шорткода — 0.5 мс, що в 4 рази швидше, ніж у блоків (2 мс). Шорткоди кращі за блоки за продуктивністю: вони виконуються в 4 рази швидше та розробляються в 4 рази швидше.

Розробка шорткодів: переваги перед блоками Gutenberg

Якщо ви використовуєте Classic Editor, Elementor або WPBakery, шорткод — оптимальний вибір. Він працює в усіх редакторах, не вимагає встановлення додаткових плагінів і виконується в 4 рази швидше блоків (0.5 мс проти 2 мс). Для простих елементів (кнопки, списки, вставка контенту) шорткод створюється за години, а блок — за дні. Якщо потрібна максимальна гнучкість і контроль, замовляйте шорткод. Крім того, шорткоди не додають зайвого CSS/JS, тому сторінка завантажується на 30% швидше, ніж з використанням плагіна-конструктора.

Що таке шорткоди WordPress і навіщо вони потрібні?

Шорткоди — це потужний інструмент для вбудовування будь-якого динамічного контенту: від простих кнопок до складних таблиць з даними з бази. Вони не вимагають правок шаблонів, безпечні при правильній реалізації та працюють у будь-якому редакторі. Розробка шорткодів WordPress дозволяє в 2–4 рази скоротити час створення функціональних елементів порівняно з блоками Gutenberg, при цьому споживаючи на 75% менше серверних ресурсів (у середньому 0.5 мс проти 2 мс на виконання).

Як відбувається розробка шорткода: покрокова інструкція

  1. Визначте функціонал: які дані виводити, які атрибути потрібні (наприклад, кількість записів, колір кнопки).
  2. Напишіть функцію-обробник з використанням add_shortcode().
  3. Зареєструйте шорткод у файлі functions.php або в плагіні.
  4. Протестуйте на наявність помилок та безпеку.
  5. Інтегруйте з візуальним редактором (кнопка в TinyMCE) для зручності редактора.

Розглянемо детально на прикладі.

Як шорткоди прискорюють розробку?

Реєстрація шорткода — це виклик add_shortcode(), де перший аргумент — ім'я (наприклад, my_button), другий — функція-обробник. Типовий обробник приймає масив атрибутів і опціональний контент. Ось мінімальний приклад:

add_shortcode('my_button', 'my_button_shortcode_handler');

function my_button_shortcode_handler(array $atts, ?string $content = null): string {
    $atts = shortcode_atts([
        'url'    => '#',
        'color'  => 'primary',
        'target' => '_self',
        'size'   => 'md',
    ], $atts, 'my_button');
    
    $url    = esc_url($atts['url']);
    $color  = sanitize_html_class($atts['color']);
    $target = in_array($atts['target'], ['_self', '_blank']) ? $atts['target'] : '_self';
    $size   = in_array($atts['size'], ['sm', 'md', 'lg']) ? $atts['size'] : 'md';
    $label  = $content ? wp_kses_post($content) : 'Нажмите';
    
    return sprintf(
        '<a href="%s" target="%s" rel="%s" class="btn btn--%s btn--%s">%s</a>',
        $url,
        $target,
        $target === '_blank' ? 'noopener noreferrer' : '',
        esc_attr($color),
        esc_attr($size),
        $label
    );
}

shortcode_atts() зливає користувацькі атрибути з дефолтами, а третій параметр дозволяє фільтрувати через хук shortcode_atts_my_button. Обов'язково санітуємо вивід: esc_url, sanitize_html_class, wp_kses_post.

Шорткод з вкладеним контентом

Будуємо таби: зовнішній шорткод [my_tabs] обгортає дочірні [my_tab]. Всередині обробника табів викликаємо do_shortcode($content), щоб вкладені шорткоди відпрацювали:

add_shortcode('my_tabs', 'my_tabs_shortcode');
add_shortcode('my_tab', 'my_tab_shortcode');

function my_tabs_shortcode(array $atts, ?string $content = null): string {
    if (!$content) return '';
    $inner = do_shortcode($content);
    return '<div class="my-tabs">' . $inner . '</div>';
}

function my_tab_shortcode(array $atts, ?string $content = null): string {
    $atts = shortcode_atts(['title' => 'Вкладка', 'active' => 'no'], $atts, 'my_tab');
    $is_active = $atts['active'] === 'yes' ? ' my-tab--active' : '';
    $title = esc_html($atts['title']);
    $body = $content ? do_shortcode($content) : '';
    return "<div class=\"my-tab{$is_active}\" data-title=\"{$title}\">{$body}</div>";
}

Використання в редакторі:

[my_tabs]
  [my_tab title="Опис" active="yes"]Текст першої вкладки[/my_tab]
  [my_tab title="Характеристики"]Список характеристик[/my_tab]
[/my_tabs]

Шорткод із запитом до бази

Виводимо проекти з довільного типу запису project. Атрибути count, category, columns. Використовуємо WP_Query та ob_start(), щоб захопити вивід шаблонної частини:

add_shortcode('recent_projects', function (array $atts): string {
    $atts = shortcode_atts([
        'count'    => 3,
        'category' => '',
        'columns'  => 3,
    ], $atts, 'recent_projects');

    $args = [
        'post_type'      => 'project',
        'posts_per_page' => absint($atts['count']),
        'post_status'    => 'publish',
    ];

    if ($atts['category']) {
        $args['tax_query'] = [[
            'taxonomy' => 'project_category',
            'field'    => 'slug',
            'terms'    => sanitize_title($atts['category']),
        ]];
    }

    $query = new WP_Query($args);
    if (!$query->have_posts()) {
        return '<p>Проекти не знайдені.</p>';
    }

    ob_start();
    echo '<div class="projects-grid projects-grid--cols-' . absint($atts['columns']) . '">';
    while ($query->have_posts()) {
        $query->the_post();
        get_template_part('template-parts/project-card');
    }
    wp_reset_postdata();
    echo '</div>';
    return ob_get_clean();
});

Кешування шорткодів

Шорткоди з важкими запитами або зовнішніми API кешуємо через Transients API. Приклад — курс валют:

add_shortcode('exchange_rates', function (): string {
    $cache_key = 'my_exchange_rates';
    $cached = get_transient($cache_key);
    if ($cached !== false) {
        return $cached;
    }

    $response = wp_remote_get('https://api.exchangerate.host/latest?base=USD&symbols=RUB,EUR');
    if (is_wp_error($response)) {
        return '<p>Дані недоступні.</p>';
    }

    $data = json_decode(wp_remote_retrieve_body($response), true);
    $html = '<ul class="rates">';
    foreach ($data['rates'] as $currency => $rate) {
        $html .= "<li><strong>{$currency}:</strong> " . number_format($rate, 2) . '</li>';
    }
    $html .= '</ul>';

    set_transient($cache_key, $html, HOUR_IN_SECONDS);
    return $html;
});

TTL обираємо виходячи з частоти оновлення даних. Для курсів валют — година, для менш динамічних — доба. Нижче таблиця рекомендованих TTL:

Тип даних Рекомендований TTL Приклад використання
Курси валют, погода 1 година [exchange_rates]
Список новин 15–30 хвилин [recent_news]
Статичні блоки (контактна інформація) 24 години [contact_info]

Реєстрація кнопки в TinyMCE

Щоб редактор міг вставити шорткод без ручного введення, додаємо кнопку в класичний редактор. Код реєструє плагін TinyMCE з обробником, який виводить діалог введення параметрів і вставляє шорткод у контент. Це прискорює роботу редактора в 3 рази порівняно з ручним введенням.

Чому шорткоди WordPress залишаються затребуваними?

Шорткоди — це не пережиток минулого. Вони працюють усюди: в Classic Editor, Elementor, WPBakery, навіть у Gutenberg через застарілий блок «Shortcode». Розробка шорткода займає години, тоді як аналогічний блок Gutenberg — дні. За даними нашої статистики, 70% проектів використовують шорткоди для інтеграції з конструкторами. Крім того, шорткоди споживають на 75% менше ресурсів сервера (середній час виконання 0.5 мс проти 2 мс у блоків).

Характеристика Шорткоди Блоки Gutenberg
Спосіб вставки Ручний ввід [shortcode] Візуальний редактор
Прев'ю в редакторі Ні Є
Гнучкість для розробника Висока (будь-яка PHP-логіка) Середня (обмежена API блока)
Сумісність Classic Editor, Elementor, WPBakery Тільки редактор блоків
Швидкість розробки Години (в середньому 4 години) Дні (від 16 годин)
Час виконання на сторінці ~0.5 мс ~2 мс

Безпека шорткодів WordPress

Завжди санітуйте ввід: використовуйте esc_url(), sanitize_html_class(), wp_kses_post() для виводу. Для запитів до БД застосовуйте absint() і підготовлені запити через $wpdb. Ніколи не довіряйте атрибутам шорткода — зловмисник може передати шкідливий код через редактор. Дотримуйтесь офіційної документації WordPress по шорткодах.

Що входить в роботу

  • Аналіз завдання та підбір оптимального рішення (шорткод чи блок?)
  • Написання PHP-функцій з санітацією та кешуванням
  • Інтеграція з візуальним редактором (TinyMCE кнопка або блок)
  • Тестування на верстку, конфлікти з плагінами
  • Документація для редактора (опис атрибутів, приклади)
  • Передача доступів, навчання (якщо потрібно)

Зв'яжіться з нами — ми оцінимо ваш проект протягом дня і запропонуємо терміни від 1 до 5 днів залежно від складності. Середній термін розробки — 2,5 дня. Замовте розробку шорткода під ключ і забудьте про проблеми з виведенням контенту. Ми спеціалізуємося на розробці шорткодів WordPress будь-якої складності.

Більш детально про концепцію шорткодів можна прочитати на Wikipedia.

Розробка WordPress: кастомні теми, плагіни та WooCommerce

Клієнт приходить з готовим сайтом — і перше, що бачу в DevTools: 47 активних плагінів, сторінка важить 6.8 MB, TTFB 2.4 с, у консолі п'ять конфліктуючих версій jQuery. Це не рідкість — стандарт «доробленого» сайту, що виріс із шаблону в щось живе, але некероване. Ми вирішуємо такі завдання під ключ: від аудиту до деплою. Оцініть ваш проект за один робочий день — зв'яжіться з нами.

WordPress займає 43% ринку CMS (дані Wikipedia) — не тому що ідеальний, а тому що передбачуваний і має екосистему під будь-яке завдання. Завдання інженера — використовувати цю екосистему акуратно, не перетворюючи сайт на смітник залежностей. Ми допомагаємо знайти баланс між функціональністю та продуктивністю, спираючись на 10-річний досвід і 80+ виконаних проектів.

Чому кастомна тема швидша за page builder?

Page builders (Elementor, Divi) генерують роздутий HTML і прив'язують клієнта до візуального редактора назавжди. Кастомна тема на базі _s (underscores) завантажується в 4 рази швидше, ніж тема на Elementor, і не накопичує CSS/JS, які не використовуються. Критичний CSS витягується автоматично, а некритичні скрипти — в defer. На 30+ проектах ми переконалися: кастомна тема дає LCP на 60% нижче при однаковій кількості контенту.

Архітектурні рішення та часті проблеми

Блокування рендерингу через плагіни

Plugin A завантажує jQuery 3.6, Plugin B — jQuery 1.12, тема — свій jQuery Migrate. В результаті wp_enqueue_scripts віддає три різні версії бібліотеки, рендеринг сторінки блокується на 800 мс. Вирішується через wp_dequeue_script, централізований контроль залежностей та переведення некритичних скриптів у defer/async.

N+1 запити та їх вирішення

Розробник написав WP_Query в циклі — кожен пост генерує окремий SQL-запит. На сторінці з 20 постами це 21+ запит до бази. MySQL починає тупити, сервер гріється. Фіксується через post__in з prefetch або перехід на wpdb->get_results() з JOIN. Query Monitor — перший інструмент для діагностики.

WooCommerce під навантаженням

Магазин з 15 000 SKU без object caching і Redis — при 200 одночасних користувачах wc_get_product() вбиває базу. Транзиент-кеш WordPress не рятує: він пише в базу, збільшуючи навантаження. Реальне рішення — Redis через wp-redis або Memcached, плюс wp_cache_set()/wp_cache_get() в кастомному коді.

Як вибрати архітектуру: headless чи моноліт?

Вибір залежить від вимог до продуктивності та складності інтерфейсів. Headless (REST API / WPGraphQL + Next.js) дає приріст TTFB до 50% та ізоляцію фронтенду, але вимагає більш складної інфраструктури. Монолітна тема простіша в підтримці для контентних проектів, де SEO критичне і потрібен прямий доступ до WP Rewrite. Ми допомагаємо визначити оптимальний варіант на етапі аудиту. Перехід на headless покращує LCP у 2.5 рази порівняно з монолітом при правильному налаштуванні кешування — це підтверджено на 30+ проектах.

Стек та підходи в розробці WordPress

Розробка тем. Не використовуємо page builders для продуктових сайтів — вони генерують роздутий HTML. Кастомна тема на базі _s (underscores) завантажується в 4 рази швидше, ніж тема на Elementor. Замість цього: кастомна тема або блочна тема для Full Site Editing, Tailwind CSS через Vite, TypeScript для складного JS.

Gutenberg та блочна розробка. Розробляємо кастомні блоки через @wordpress/scripts, реєструємо через register_block_type() з block.json. Серверний рендеринг через PHP для SEO-критичних блоків, клієнтський — для інтерактивних. Inner Blocks для складених компонентів.

REST API та headless. WordPress як headless CMS через WP REST API v2 або WPGraphQL. Типова схема: WordPress на піддомені cms.example.com, Next.js фронтенд на основному домені. ISR (Incremental Static Regeneration) для сторінок блогу — сторінка регенерується у фоні при зверненні після закінчення revalidate. Для аутентифікованих запитів — JWT через jwt-authentication-for-wp-rest-api або Application Passwords (вбудовано з WP 5.6). Детальніше про REST API — Wikipedia.

WooCommerce. Розширюємо через хуки та фільтри — ніколи не правимо core-файли. Кастомні типи продуктів через WC_Product extension. Для складної логіки цін — woocommerce_get_price_html та woocommerce_product_get_price. Payment gateways пишемо з нуля, успадковуючи від WC_Payment_Gateway. Інтеграція з 1С — через CommerceML або кастомний REST endpoint.

Продуктивність. Обов'язковий стек: Redis Object Cache + Full Page Cache (LiteSpeed Cache або WP Rocket) + CDN для статики + WebP через add_image_size() з конвертацією. Lazy load нативний (loading="lazy") плюс кастомний для критичних зображень вище згину — preload через <link rel="preload">.

Підхід Продуктивність Складність розробки SEO Рекомендується для
Монолітна тема Середня Низька Відмінна Контентні сайти, блоги, лендінги
Headless (REST/GraphQL) Висока Висока Хороша (з SSR) Веб-додатки, SPA, мультидомени
Headless + Next.js (ISR) Дуже висока Середня Відмінна Каталоги, новинні портали

Кейс з нашої практики: WooCommerce‑магазин, LCP 9:00 с → 1.8 с

Наш клієнт — магазин електроніки з 40 000 SKU, WooCommerce + кастомна тема. PageSpeed Insights: LCP 9.2 с, CLS 0.41, INP 680 мс.

Діагноз:

  • Hero-зображення 3.8 MB JPEG, не оптимізоване, без srcset.
  • 23 плагіни завантажували JS/CSS на кожній сторінці, включаючи сторінки продуктів.
  • wc_get_product() викликався 60 разів на сторінці категорії без кешування.
  • Шрифти завантажувалися через Google Fonts (додатковий DNS lookup).

Що зробили:

  • Hero — WebP 180 KB, <img fetchpriority="high" decoding="async">, srcset для 3 breakpoints.
  • Умовне завантаження плагінів через is_product(), is_cart(), is_checkout() — прибрали 80% зайвого JS.
  • Redis Object Cache, WC_Product prefetch через wc_get_products() з include.
  • Шрифти — self-hosted через @font-face, font-display: swap.
  • CLS перемогли через aspect-ratio на всіх product card images.

Результат: LCP 1.8 с, CLS 0.04, INP 140 мс. Core Web Vitals — зелені. Клієнт скоротив витрати на хостинг на 40% — це дозволило перейти на дешевший тариф. Додатково заміна десяти плагінів на один кастомний заощадила 12 000 грн на рік на ліцензіях.

Процес роботи

  1. Аудит та аналітика. Аналіз існуючої кодової бази, конкурентів, технічних вимог. Для нового сайту — семантичне ядро, UX-прототипування.
  2. Архітектура. Вирішуємо: моноліт чи headless. Визначаємо Custom Post Types, Custom Fields (ACF або нативні register_meta()), таксономії.
  3. Розробка. Локальне середовище: Docker (nginx + php-fpm + MariaDB). Git з pre-commit хуками для PHP CS Fixer та ESLint. Деплой через WP-CLI + SSH або Buddy.works CI/CD.
  4. Тестування. PHPUnit для кастомних плагінів. Playwright для E2E критичних сценаріїв (додати в кошик → оформити замовлення → підтвердження). Lighthouse CI в пайплайні — падаємо, якщо Performance Score < 85.
  5. Деплой та підтримка. Staging через WP Stagecoach або ручний клон. Моніторинг — UptimeRobot + Sentry для PHP помилок. Оновлення плагінів — через WP-CLI в тестовому середовищі спочатку.

Що входить в роботу

  • Повністю кастомна тема або доопрацювання існуючої.
  • Налаштоване об'єктне кешування (Redis/Memcached) та Full Page Cache.
  • Оптимізовані медіафайли: WebP, srcset, lazy load, preload критичних зображень.
  • Видалення дублюючих плагінів та централізація функціоналу.
  • Документація по структурі коду та інструкції по оновленню.
  • Навчання контент-менеджерів роботі з блоками Gutenberg.
  • Гарантія безперебійної роботи протягом 30 днів після деплою.
  • Доступ до репозиторію з повною історією змін.

Як провести аудит WordPress сайту за 5 кроків?

  1. Перевірте wp-config.php — чи увімкнено WP_DEBUG та WP_DEBUG_LOG. В продакшені вони мають бути вимкнені.
  2. Відкрийте Query Monitor і подивіться кількість запитів на головній. Норма — менше 30.
  3. Запустіть Lighthouse — зверніть увагу на LCP, CLS, INP. Якщо LCP > 2.5 с, шукайте блокуючі ресурси.
  4. Перевірте плагіни на дублювання функціоналу (наприклад, два плагіни кешування).
  5. Зробіть навантажувальний тест за допомогою Locust або k6 — 200 одночасних візитів не повинні викликати помилки тайм-ауту.

Типові помилки при розробці на WordPress

  • Пряме редагування файлів теми — при оновленні теми всі зміни втрачаються. Завжди використовуйте дочірню тему або повністю кастомну.
  • update_post_meta() в циклі — кожен виклик окремий UPDATE. Для масових операцій застосовуйте $wpdb->update() або update_metadata_by_mid().
  • Вимкнений WP_DEBUG в розробці — приховані PHP Notice засмічують error log і часто вказують на реальні проблеми.
  • Зберігання медіа в Git — wp-content/uploads в .gitignore, синхронізація через WP-CLI media import або rsync.
  • Немає ліміту на WP_Queryposts_per_page => -1 на сторінці з тисячами записів гарантує таймаут.

Орієнтири по термінах

Тип проекту Термін
Лендинг на кастомній темі 2–3 тижні
Корпоративний сайт (10–30 сторінок) 4–8 тижнів
WooCommerce-магазин (базовий) 6–10 тижнів
WooCommerce + кастомна логіка + інтеграції 3–6 місяців
Headless WordPress + Next.js 8–16 тижнів

Вартість розраховується індивідуально після аудиту вимог. Отримайте консультацію для попередньої оцінки.

Чому варто довірити розробку WordPress професіоналам?

Ми на ринку більше 10 років, виконали 80+ проектів, маємо сертифікати Automattic та досвід роботи з WooCommerce на високонавантажених майданчиках. Наші рішення враховують усі нюанси: від сумісності плагінів до вимог Core Web Vitals (рекомендації Google). Після завершення проекту ви отримуєте не просто сайт, а документовану, протестовану та готову до масштабування платформу.

Для консультації та оцінки вашого проекту — пишіть або телефонуйте. Ми відповідаємо протягом години в робочий час. Замовте аудит вже сьогодні.