Оглавление

Если вы, как и я, используете WP Telegram для автопубликации новых постов в канал, вы наверняка сталкивались с одной неприятной проблемой: Telegram-виджет комментариев отказывается работать.

Вот как выглядел мой шаблон раньше:

📅 <i>{post_date}</i> | ✍️ <i>{post_author}</i>

📌 <b>{post_title}</b> 📌

{post_excerpt}

{tags}

Подробнее 👉
{full_url}

Выглядит отлично, но… виджет Telegram-комментариев писал “Discussion is not available at the moment”. Почему?


🚨 Проблема: ссылка не “чистая”

Telegram требует, чтобы ссылка на статью (например, https://krivoshein.site/название-записи) была на отдельной строке и без лишнего обрамления.

Но даже это не всегда помогает, если в {post_excerpt} содержатся другие ссылки, например, на внешний ресурс или на сам сайт. Telegram тогда не “видит” эту запись как обсуждаемую.


🧠 Решение: переменная clean_excerpt

Чтобы избежать попадания ссылок в Telegram-публикации, я создал кастомную переменную clean_excerpt, которая очищает анонс от ссылок и форматирования.

Добавляем в functions.php дочерней темы:

add_filter('wptelegram_post_template_vars', function($vars, $post) {
    $excerpt = get_the_excerpt($post);
    $excerpt = wp_strip_all_tags($excerpt); // убираем HTML
    $excerpt = preg_replace('/https?:\/\/[^\s]+/', '', $excerpt); // убираем ссылки
    $excerpt = wp_trim_words($excerpt, 40); // обрезаем до 40 слов

    $vars['clean_excerpt'] = trim($excerpt);
    return $vars;
}, 10, 2);

После этого в шаблоне можно использовать:

{clean_excerpt}

🔁 Но если и это не работает…

Да, у меня тоже такое было. {clean_excerpt} просто не подставлялся — Telegram получал это как текст {clean_excerpt}.

Тогда я пошёл другим путём — заменил переменную по умолчанию post_excerpt через фильтр:

add_filter('wptelegram_post_excerpt', function($excerpt, $post) {
    $excerpt = wp_strip_all_tags($excerpt);
    $excerpt = preg_replace('/https?:\/\/[^\s]+/', '', $excerpt);
    return wp_trim_words($excerpt, 40);
}, 10, 2);

Теперь даже если в шаблоне используется {post_excerpt}ссылок не будет.


✅ Итоговый шаблон, который работает

📅 <i>{post_date}</i> | ✍️ <i>{post_author}</i>

📌 <b>{post_title}</b> 📌

{post_excerpt}

{tags}

🌐 Читай в блоге:  
{full_url}

💡 Главное — убедитесь, что ссылка {full_url} на отдельной строке, и в тексте до неё нет других ссылок (особенно в excerpt).


📌 И ещё кое-что…

Если вы, как и я, вручную удаляли старые посты и создавали новые (например, переименовали запись или хотели пересоздать тему обсуждения), то учтите:

ID поста в Telegram-виджете уже не совпадает с новым.

Поэтому Telegram не “видит”, что запись опубликована. Это можно решить, заново отправив запись в канал — либо вручную, либо через WP Telegram → Send to Telegram.


💬 Вывод

Сейчас мой сайт:

  • Не собирает ПДн (нет формы, нет комментариев)
  • Использует Telegram-виджет
  • Публикует записи с аккуратным шаблоном без ссылок в анонсе
  • Работает быстро и безопасно

А Telegram наконец-то показывает активные обсуждения прямо на сайте.