Плагин 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 );
Как это устроено
- Счётчик:
get_comments_number( $post->ID )для текущего поста. - Текст: при count > 0 число и ссылка на
{permalink}#comments; иначе короткая пометка, что комментариев ещё нет. - Фильтр: сообщение дорабатывается перед отправкой. В старых гайдах встречается
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 и якорь в теме. Тогда уведомления станут информативнее без перегруза канала.
