Преобразует ссылки Telegram из https://t.me/username в tg://resolve?domain=username на сайте wordpress gutenberg
/**
 * Преобразует ссылки Telegram из https://t.me/username в tg://resolve?domain=username
 * Корректно обрабатывает параметры (?text=... превращается в &text=...)
 */
function convert_telegram_links_to_tg_scheme($content) {
    $pattern = '/<a\s+([^>]*?)href=["\']https:\/\/t\.me\/([^\/?\'"]+)(\?[^"\']*)?["\']([^>]*)>/i';
    
    $callback = function($matches) {
        $attributes_before = $matches[1];
        $username = $matches[2];
        $query = isset($matches[3]) ? $matches[3] : '';
        $attributes_after = $matches[4];
        
        $new_query = '';
        if (!empty($query)) {
            $params = substr($query, 1);
            $new_query = '&' . $params;
        }
        
        $new_url = 'tg://resolve?domain=' . $username . $new_query;
        
        return '<a ' . $attributes_before . 'href="' . $new_url . '"' . $attributes_after . '>';
    };
    
    return preg_replace_callback($pattern, $callback, $content);
}

// Применяем к основному контенту (посты, страницы)
add_filter('the_content', 'convert_telegram_links_to_tg_scheme', 20);

// Применяем к виджетам
add_filter('widget_text', 'convert_telegram_links_to_tg_scheme', 20);

// Применяем к выводу меню (если в меню есть ссылки на Telegram)
add_filter('wp_nav_menu_items', 'convert_telegram_links_to_tg_scheme', 20);
add_filter('wp_nav_menu', 'convert_telegram_links_to_tg_scheme', 20);

// Применяем ко всему выводу (header, footer, sidebar и т.д.)
// Вариант 1: через буферизацию вывода (рекомендуется)
function convert_all_telegram_links_buffer() {
    ob_start(function($buffer) {
        return convert_telegram_links_to_tg_scheme($buffer);
    });
}
add_action('wp_loaded', 'convert_all_telegram_links_buffer');

// Вариант 2: через фильтр get_the_excerpt (для анонсов)
add_filter('get_the_excerpt', 'convert_telegram_links_to_tg_scheme', 20);
add_filter('the_excerpt', 'convert_telegram_links_to_tg_scheme', 20);

@seomur

Это сайт с моими заметками по wordpress и woocommerce

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x