Как добавить кнопку Telegram в Kadence Simple Share

В плагине Kadence Simple Share есть кнопки для популярных соцсетей: VK, Facebook, WhatsApp, Email и других. Но в некоторых версиях плагина нет отдельной кнопки Telegram. Добавить ее можно вручную, без изменения файлов плагина. Это важно: если редактировать сам плагин, изменения пропадут после обновления. Поэтому лучше использовать отдельный PHP-сниппет через WPCode или Code Snippets. Что получится…

В плагине Kadence Simple Share есть кнопки для популярных соцсетей: VK, Facebook, WhatsApp, Email и других. Но в некоторых версиях плагина нет отдельной кнопки Telegram.

Добавить ее можно вручную, без изменения файлов плагина. Это важно: если редактировать сам плагин, изменения пропадут после обновления. Поэтому лучше использовать отдельный PHP-сниппет через WPCode или Code Snippets.

Что получится

После добавления кода рядом с кнопками шаринга появится новая кнопка Telegram. При клике она будет открывать стандартное окно Telegram Share и передавать туда:

  • ссылку на текущую страницу;
  • заголовок текущей записи.

Код для добавления Telegram

Добавьте этот код в WPCode → Code Snippets → Add Snippet → PHP Snippet:

/**
 * Добавляет кнопку Telegram в Kadence Simple Share.
 */
add_action( 'wp_footer', function () {
    if ( is_admin() ) {
        return;
    }
    ?>
    <style>
        .kt_telegram_share {
            background: #229ED9 !important;
            color: #fff !important;
        }

        .kt_telegram_share:hover,
        .kt_telegram_share:focus {
            background: #1D8EC2 !important;
            color: #fff !important;
        }

        .kt_telegram_share svg {
            width: 1em;
            height: 1em;
            display: block;
            fill: currentColor;
        }
    </style>

    <script>
    document.addEventListener('DOMContentLoaded', function () {
        document.querySelectorAll('.kt_simple_share_container').forEach(function (container) {
            var hasShareLinks = Array.from(container.children).some(function (child) {
                return child.matches && child.matches('a[class^="kt_"][class*="_share"]');
            });

            if (!hasShareLinks || container.querySelector('.kt_telegram_share')) {
                return;
            }

            var pageUrl = encodeURIComponent(window.location.href.split('#')[0]);
            var pageTitle = encodeURIComponent(document.title);

            var telegram = document.createElement('a');
            telegram.className = 'kt_telegram_share';
            telegram.href = 'https://t.me/share/url?url=' + pageUrl + '&text=' + pageTitle;
            telegram.target = '_blank';
            telegram.rel = 'noopener noreferrer';
            telegram.setAttribute('aria-label', 'Telegram');
            telegram.setAttribute('data-tooltip', 'Telegram');
            telegram.setAttribute('data-placement', 'bottom');
            telegram.setAttribute('data-placement-mobile', 'bottom');

            telegram.innerHTML = '<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M21.94 4.16a1.35 1.35 0 0 0-1.39-.2L3.23 10.64c-.88.35-.85 1.6.05 1.9l4.4 1.43 1.7 5.36c.27.84 1.35 1.06 1.93.4l2.45-2.78 4.48 3.3c.75.55 1.82.14 2-.78l3-13.77c.14-.62-.12-1.24-.66-1.54ZM8.55 13.2l8.58-5.34c.16-.1.33.1.2.24l-7.1 6.42-.27 3.13-1.41-4.45Zm2.2 4.5.2-2.25 1.55 1.14-1.75 1.11Z"></path></svg>';

            var whatsapp = container.querySelector('.kt_whatsapp_share');
            var email = container.querySelector('.kt_email_share');

            if (whatsapp && whatsapp.nextSibling) {
                container.insertBefore(telegram, whatsapp.nextSibling);
            } else if (email) {
                container.insertBefore(telegram, email);
            } else {
                container.appendChild(telegram);
            }
        });
    });
    </script>
    <?php
});

Настройки сниппета

В WPCode выберите:

Code Type: PHP Snippet
Location: Frontend Only
Auto Insert: Run Everywhere
Status: Active

После сохранения очистите кеш сайта и браузера.

Как работает код

Код добавляется в футер сайта через WordPress-хук:

add_action( 'wp_footer', function () {

Это значит, что он загружается на внешней части сайта, где уже есть HTML-кнопки Kadence Simple Share.

Проверка:

if ( is_admin() ) {
    return;
}

нужна, чтобы код не запускался внутри админки WordPress.

Дальше идет CSS. Он задает кнопке Telegram фирменный цвет:

background: #229ED9;

Это основной корпоративный цвет Telegram. При наведении используется чуть более темный оттенок:

background: #1D8EC2;

Затем JavaScript ищет контейнеры Kadence Simple Share:

document.querySelectorAll('.kt_simple_share_container')

Внутри них плагин хранит кнопки VK, Facebook, WhatsApp, Email и другие.

Проверка:

if (!hasShareLinks || container.querySelector('.kt_telegram_share')) {
    return;
}

делает две вещи:

  • не добавляет Telegram туда, где нет кнопок шаринга;
  • не добавляет кнопку повторно, если она уже есть.

Дальше код берет URL текущей страницы:

var pageUrl = encodeURIComponent(window.location.href.split('#')[0]);

и заголовок страницы:

var pageTitle = encodeURIComponent(document.title);

После этого создается ссылка Telegram:

telegram.href = 'https://t.me/share/url?url=' + pageUrl + '&text=' + pageTitle;

Это официальный формат Telegram Share. Он открывает Telegram и передает ссылку с текстом.

SVG внутри telegram.innerHTML — это иконка Telegram. Она встроена прямо в код, поэтому не нужно подключать отдельный файл изображения или библиотеку иконок.

В конце код вставляет кнопку после WhatsApp:

container.insertBefore(telegram, whatsapp.nextSibling);

Если WhatsApp нет, кнопка вставляется перед Email. Если нет и Email, она добавляется в конец списка.

Почему ссылка может не отображаться на локальном сайте

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

localhost
wordpressbook.local
site.test

Telegram может не показывать ссылку или предпросмотр. Это нормально. Серверы Telegram не могут открыть локальный сайт на вашем компьютере.

На живом сайте с публичным адресом вида:

https://example.com/post-name/

ссылка будет передаваться корректно.

Что писать в Tooltip Settings

В настройках Kadence Simple Share есть поля:

Tooltip text before social network name
Tooltip text before email

Можно оставить их пустыми. Но если сайт на русском, удобно заполнить так:

Поделиться в

для соцсетей, и:

Отправить по

для email.

Тогда подсказки будут выглядеть так:

Поделиться в Telegram
Отправить по Email

Итог

Такой способ не меняет файлы Kadence Simple Share и не ломается при обновлении плагина. Код просто находит уже готовые кнопки шаринга на странице и добавляет к ним Telegram с правильной ссылкой, цветом и иконкой.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *