Поле для комментариев Discourse отображается дважды

Два окна комментариев Discourse отображаются.

Платформа: WordPress
Тема: Astra

Ранее мы использовали тему Extol, затем перешли на Astra. Добавили хук для секции комментариев через конструктор сайтов Astra и разместили его под записью с помощью условия отображения.

Во всех записях блога секция комментариев отображается нормально, кроме трёх записей (в них секция комментариев Discourse показывается дважды).

Может ли кто-нибудь, пожалуйста, помочь?

Привет! Похоже, проблема связана с вашей темой или, возможно, с тем, как вы используете «Astra Site Builder», но давайте попробуем помочь вам.

Можете ли вы подробнее описать, как это выглядит? Использовали ли вы какой-либо код? Можете ли вы предоставить ссылку на документацию для «Astra Site Builder»? Является ли это темой с поддержкой блоков? Постарайтесь предоставить как можно больше деталей.

Спасибо @angus за быстрый ответ.

На самом деле, при редактировании кода я не вижу никакого кода, и я использую шаблон по умолчанию для одной записи темы, в котором не должно быть кода комментариев Discourse.

Странно то, что это происходит только со следующими постами: Strange thing is this happening with only following posts: - Pastebin.com [Пожалуйста, проверьте Pastebin, я добавил туда ссылки].

В других постах отображается только поле для комментариев, которое я добавил через конструктор сайтов Astra.

Да, Astra — это тема с поддержкой блоков. Вот её документация: https://wpastra.com/docs/

Вы использовали блок комментариев WP Discourse?

Да, я использовал блок комментариев WP Discourse в конструкторе сайтов Astra. Даже при отключении хука конструктора сайтов Astra этот дополнительный блок комментариев Discourse по-прежнему отображается под записью.

Ранее мы использовали тему Extol и добавили блок комментариев Discourse непосредственно на страницу отдельной записи.

Затем мы перешли на Astra.

Astra имеет некоторые ограничения, из-за которых мы не можем редактировать шаблон отдельной записи по умолчанию. Поэтому я добавил блок комментариев Discourse через хук конструктора сайтов Astra, и это работает безупречно.

Даже если я отключу хук конструктора сайтов Astra, на этих трёх страницах всё ещё отображается блок комментариев Discourse, хотя мы не добавляли блок комментариев в саму запись. И я действительно не могу понять, откуда он там берётся.

Пожалуйста, отключите настройку «Включить комментарии Discourse» в разделе WP Discourse > Комментарии и сообщите, какой эффект это даст (не забудьте сохранить изменение настройки).

Если я отключу эту настройку, оба поля для комментариев исчезнут.

Хорошо, вы можете снова включить это.

Проблема в том, что в зависимости от комбинации темы и конструктора сайтов, которую вы используете, на одной странице одновременно отображаются и PHP-шаблон записи, и блочный шаблон записи (это не нормально). Именно поэтому возникает эта проблема.

Если вы хотите загружать оба шаблона на одной странице, вам нужно удалить строку comments_template из PHP-шаблона записи.

Если это связано с PHP, мне интересно, почему это видно только для трёх конкретных постов. Я не смог найти comments_template в файле single.php. :cry:

Если я отключу комментарии в настройках кастомизатора, исчезнет только поле для комментариев. Однако поле комментариев Discourse всё ещё видно.

Так и не смог разобраться.

Когда кто-то оставляет комментарий в теме форума Discourse, под соответствующим постом в блоге появляется новый раздел комментариев. Я не могу найти comments_template.

Не могли бы вы порекомендовать статью или видеоурок по этой теме?

@angus

Я скрыл один раздел комментариев с помощью дополнительного CSS.

Это временное решение. Если существует более эффективный способ, пожалуйста, дайте мне знать, и я его применю.

В используемых вами PHP-шаблонах есть вызов функции comments_template, который вызывает эту проблему. Он выглядит примерно так:

<?php comments_template(); ?>

Место его расположения зависит от используемых вами PHP-шаблонов. Найдите эту функцию, и проблема будет решена. К сожалению, мы или статья не сможем помочь больше.

Единственная другая рекомендация — обратиться к специалистам поддержки «Astra». Основная проблема здесь заключается в сочетании используемых вами PHP-шаблонов и блоков. Возможно, они смогут пролить свет на эту ситуацию.

Прежде всего, хочу от всей души поблагодарить @angus за то, что вы остались со мной на протяжении всего этого процесса и предоставили столь вдумчивые рекомендации. Ваша поддержка очень много для меня значит, и я искренне ценю время и усилия, которые вы потратили на помощь в решении этой проблемы. Позвольте мне подробно рассказать о том, что я исследовал и пробовал, в надежде, что это может помочь другим, столкнувшимся с аналогичными трудностями.

Предпосылки и начальная настройка:
Изначально мы использовали тему Extol, где блок комментариев Discourse был добавлен непосредственно на страницу отдельной записи. Это работало идеально. Однако после переключения на тему Astra ситуация усложнилась. Поскольку в теме Astra есть определенные ограничения (например, невозможность легко редактировать шаблон записи по умолчанию), я добавил блок комментариев Discourse через хуки конструктора сайтов Astra и разместил его под записью на основе условия отображения.

Это работало гладко для большинства записей, но для трех конкретных записей секция комментариев Discourse появлялась дважды. Я не мог понять, почему это происходит только с этими записями, в то время как остальные отображались корректно. Эта аномалия заставила меня подумать, что, возможно, остались следы старой настройки Extol, но я не мог найти ничего конкретного.

Исследование проблемы:

  • Сначала я проверил редактор записей, чтобы найти какие-либо настройки или блоки, которые могли быть вручную включены или отключены для комментариев Discourse. Удивительно, но ничего там не было — никаких лишних блоков, никаких отличных настроек.
  • Затем я отключил хук конструктора сайтов Astra, чтобы посмотреть, уйдет ли лишний блок комментариев. Это не помогло; дублирующийся блок остался. Это говорило о том, что дублирование происходит вне настроек конструктора сайтов Astra.
  • Далее я попробовал отключить опцию «Включить комментарии Discourse» в настройках плагина WP Discourse. Как вы и советовали, это убрало обе секции комментариев, что указывало на то, что обе они каким-то образом генерируются через эту интеграцию.
  • После повторного включения я углубился в файлы темы. Я просмотрел файлы single.php, content-single.php и другие связанные шаблоны на наличие любого упоминания функции comments_template();. К сожалению, я не нашел ничего, что явно вызывало бы эту функцию. Это меня озадачило. Если это проблема PHP-шаблона, почему я не могу найти её?
  • Я также попробовал проверить наличие пользовательских шаблонов. Возможно, эти три записи использовали другой шаблон? Я не мог это подтвердить. Все указывало на настройку по умолчанию.
  • Еще одна теория касалась синхронизации комментариев — возможно, когда кто-то оставлял комментарий на форуме Discourse, это вызывало появление еще одной секции комментариев под связанной записью блога. Это казалось правдоподобным, но я не мог найти настройку или документацию, которая напрямую связывала бы это поведение.
  • В итоге я прибег к временному исправлению через CSS, чтобы скрыть дублирующуюся секцию комментариев:

Добавлен CSS в настройках темы WP (Дополнительный CSS):

#comments {
    display: none !important;
}

Добавлен CSS в хук Astra:

#comments {
    display: block !important;
}

Хотя это сработало, я согласен, что это не постоянное решение. Я бы предпочел устранить первопричину.

Мысли и теории:

  • Я подозреваю, что это может быть более глубокая проблема с тем, как Astra обрабатывает хуки и блоки — возможно, какой-то конфликт или дублирование в способе встраивания комментариев Discourse.
  • Другая возможность заключается в том, что есть скрытая настройка или оставшаяся конфигурация от старой темы Extol, которая все еще влияет на ситуацию.
  • Или это может быть связано с тем, как Discourse синхронизируется с WordPress. Когда в форуме оставляют комментарий, это может запускать что-то внутри сайта WordPress, создавая лишнюю секцию.

Что я еще не пробовал:

  • Обратиться в поддержку Astra: Как вы и предлагали, это может быть worthwhile. Они могут знать о подобных проблемах или предоставить информацию о том, как их тема обрабатывает комментарии и хуки.
  • Отключить все плагины, кроме WP Discourse: Это может помочь изолировать проблему, если другой плагин вызывает такое поведение.
  • Протестировать с совершенно новой записью: Создание записи с нуля и проверка, воспроизводится ли проблема, может что-то прояснить.

Следующие шаги:
На данный момент я думаю, что свяжусь со службой поддержки Astra и, возможно, проведу больше тестов с отключенными плагинами. Также я могу попробовать другой подход, используя дочернюю тему, и посмотреть, смогу ли я более точно управлять секцией комментариев Discourse вручную.

Снова, Angus, большое спасибо за вашу помощь и терпение. Ваши советы были бесценны, и хотя я еще не решил проблему, я чувствую, что стал ближе к пониманию того, что происходит. Если у кого-то еще есть мысли, идеи или опыт решения подобных проблем, я буду рад их услышать!

Я продолжу искать причину и обновлю эту тему, если найду что-то новое. Ура!

Случайно ли у вас включена настройка «Показать существующие комментарии WordPress»?

Я пробовал включать/выключать настройки, но это никак не повлияло на дополнительное поле для комментариев Discourse.

Спасибо, @Arkshine

Моя ошибка, я смотрел не на тот вопрос!
Я подумал, что речь идёт только об этом:


Думаю, ваша ситуация ожидаема.
Тема Astra не поддерживает функцию Full Site Editing и не работает с блоками.
Другими словами, Astra — это не блочная тема, и для настройки страниц вам нужно использовать сторонний конструктор страниц (в вашем случае — Elementor).

Вы наверняка увидите дублирование, если не используете блок Discourse для замены оригинального блока комментариев. Angus показывает, что нужно делать, если у вас блочная тема, в своём видео: WP Discourse Comments Block.

Когда вы добавляете блок Discourse с помощью хуков, вы не заменяете область комментариев; вы размещаете пользовательский код в определённом месте.


В чём решение?

Если вам нравится внешний вид/расположение хука Astra, есть способ удалить нативную область комментариев WordPress. Вы можете добавить этот PHP-код. Если нужна помощь с тем, как это сделать, см. https://wpastra.com/docs/add-custom-php-code/.

add_action(
	'init',
	function() {
		if ( class_exists( 'Astra_Loop' ) ) {
			remove_action( 'astra_template_parts_content', array( Astra_Loop::get_instance(), 'template_parts_comments' ), 15 );
		}
	},
	11
);

Надеюсь, это поможет!

Огромное спасибо, @Arkshine! :tada:
Наконец-то родной блок комментариев больше не отображается — какой это был путь!

И большое спасибо также @angus. Ваше терпение, наставничество и глубокие знания были поистине бесценны на протяжении всего этого процесса. Искренне благодарю за время и усилия, которые вы потратили, помогая мне разобраться в этой проблеме.

От тестирования различных настроек до отладки смешения блочных и PHP-шаблонов — я перепробовал всё: от отключения хуков Astra до корректировки CSS, проверки шаблона комментариев и даже поиска причин, почему проблема затрагивала только определённые записи. Это было настоящим аттракционом проб и ошибок, но каждый шаг помогал мне лучше понять систему.

Всё это было бы невозможно без вашей экспертизы и готовности помочь. Ваша помощь не просто устранила проблему — она научила меня очень многому о WordPress, Discourse и интеграции тем. Я невероятно благодарен.

Всем, кто сталкивается с подобными проблемами: продолжайте тестировать, учитесь и не стесняйтесь просить о помощи. Сообщество просто потрясающее! :rocket: