WP Telegram: количество комментариев в шаблоне уведомлений

Плагин WP Telegram шлёт посты WordPress в канал или группу. Базовый шаблон обычно даёт заголовок и ссылку. Если нужно чаще подталкивать к обсуждению, в текст можно добавить число комментариев и якорь на блок #comments. Ниже вариант через PHP-фильтр и доработку шаблона в настройках плагина.

Зачем трогать шаблон

Короткий шаблон по умолчанию:

{post_title}
{post_url}

Этого достаточно для анонса, но без контекста «есть ли уже обсуждение» сообщение выглядит суше. Счётчик и ссылка на комментарии дают лишний повод открыть пост на сайте.

PHP: дописать блок про комментарии

Число комментариев берётся стандартной функцией WordPress get_comments_number(). Код лучше класть в дочернюю тему или mu-plugin, не в родительскую:

function wptelegram_add_comments_count_to_message( $message, $post ) {
    if ( ! $post || empty( $post->ID ) ) {
        return $message;
    }

    $comments_count = (int) get_comments_number( $post->ID );
    $permalink      = get_permalink( $post->ID );

    if ( $comments_count > 0 ) {
        $comments_text  = "💬 <b>Комментариев:</b> " . $comments_count . "\n";
        $comments_text .= '<a href="' . esc_url( $permalink ) . '#comments">Читать комментарии</a>';
    } else {
        $comments_text = "💬 <b>Комментариев нет.</b>";
    }

    $message .= "\n\n" . $comments_text;

    return $message;
}

// Имя фильтра зависит от версии WP Telegram / P2TG.
// Если хук не срабатывает, ищите актуальный в коде плагина (wptelegram_p2tg_* / docs).
add_filter( 'wptelegram_message', 'wptelegram_add_comments_count_to_message', 10, 2 );

Как это устроено

  1. Счётчик: get_comments_number( $post->ID ) для текущего поста.
  2. Текст: при count > 0 число и ссылка на {permalink}#comments; иначе короткая пометка, что комментариев ещё нет.
  3. Фильтр: сообщение дорабатывается перед отправкой. В старых гайдах встречается wptelegram_message; в актуальном Post to Telegram API имена хуков другие. После обновления плагина проверьте, что фильтр реально вызывается (временно error_log в колбэке).

Telegram принимает ограниченный HTML: обычно b, i, u, s, a, code, pre. Атрибуты style на ссылках в клиенте не рисуют «кнопку» как в браузере: оформление кнопкой через CSS в Telegram не работает. Для parse mode в настройках WP Telegram должен быть включён HTML (или Markdown, тогда разметка другая).

Шаблон в настройках плагина

Параллельно можно собрать более живой каркас из встроенных макросов. Пример (макросы зависят от версии; {comments_count} из коробки может отсутствовать, тогда счётчик даёт только PHP-фильтр выше):

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

<b>{post_title}</b>

{post_excerpt}

<a href="{post_url}">📖 Прочитать полностью</a>

Блок про комментарии фильтр допишет в конец. Если нужен именно плейсхолдер внутри шаблона, смотрите документацию WP Telegram по custom macros / filters для подстановки своих токенов. Это отдельный слой, не путать с простым «дописать строку к $message».

Практические замечания

  • На момент публикации поста комментариев часто 0: текст «Комментариев нет» или счётчик 0 нормален. Имеет смысл слать апдейт позже (если плагин умеет edit/scheduled) или не акцентировать нули.
  • Якорь #comments работает, только если тема действительно выводит id на блоке комментариев.
  • Закрытые комментарии и кастомные discussion-плагины могут давать 0 при живом обсуждении вне native comments. Тогда нужна своя логика подсчёта.

Итог

Счётчик комментариев и ссылка на обсуждение в Telegram-анонсе: простая доработка WP Telegram через фильтр сообщения и аккуратный HTML-шаблон. Проверьте имя хука под свою версию плагина, parse mode и якорь в теме. Тогда уведомления станут информативнее без перегруза канала.

Источники и ссылки


Комментарии загружаются…