У меня возникла проблема: на стороне WordPress нет ссылки на форум Discourse. Я нашёл несколько ответов на темы форума по этому вопросу:
Все поля типа «Текстовый контент» заполнены в админ-панели WordPress → раздел «Плагины».
Синхронизация работает; я вижу комментарии с обеих сторон.
Строка URL доступна в таблице базы данных _postmeta.
В разделе комментариев отображаются уведомления:
**Уведомление**: Попытка доступа к смещению массива для значения типа null в файле **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** на строке **90**
**Уведомление**: Попытка доступа к смещению массива для значения типа null в файле **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** на строке **106**
**Уведомление**: Попытка доступа к смещению массива для значения типа null в файле **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** на строке **127**
**Уведомление**: Попытка доступа к смещению массива для значения типа null в файле **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** на строке **127**
**Уведомление**: Попытка доступа к смещению массива для значения типа null в файле **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** на строке **148**
**Уведомление**: Попытка доступа к смещению массива для значения типа null в файле **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** на строке **148**
Все они связаны с переменной $URL в файле. Я вызываю комментарии следующим образом:
<?php
global $post;
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
$discourse_comments = DiscourseUtilities::get_discourse_comments($post->ID);
echo $discourse_comments;
?>
Спасибо за обращение… У меня «чистая» установка WordPress с конструктором тем Bricks и только что установленным плагином WPdiscourse для подключения. Помимо серверного кэширования через mod_headers, нет никаких агрессивных плагинов, изменяющих скрипты.
Только что снова добавил прямую строку PHP и… магическим образом URL появился. Не понимаю, что я сделал иначе.
<?php
global $post;
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
$discourse_comments = DiscourseUtilities::get_discourse_comments($post->ID);
echo $discourse_comments;
echo get_post_meta( $post->ID, 'discourse_permalink', true );
?>
Но у меня всё ещё есть уведомления, которые относятся к строкам кода, где должен формироваться URL, а ссылка после «Продолжить обсуждение на» не отображается.
Когда я включаю стандартные комментарии WordPress (которые являются элементом шаблона Bricks), отображается «обычная форма комментариев WP», которую плагин Discourse Reviews не заменяет. См. URL выше; я изменил макет, добавив комментарии WP ниже блога.
Хорошо. Вероятно, у вас проблема с приоритетом загрузки в конструкторе шаблонов, который вы здесь используете. Завтра я попробую воссоздать это. Подождите немного.
В следующем выпуске (в настоящее время готовится к релизу) версия 2.4.6) произойдут различные изменения в утилитарной функции get_discourse_comments. Обновлённая сигнатура метода будет выглядеть следующим образом:
/**
* Получение HTML-разметки комментариев Discourse для отображения без загрузки шаблона комментариев.
*
* @param int $post_id ID публикации, для которой нужно отобразить комментарии.
* @param bool $perform_sync Определяет, выполняется ли синхронизация комментариев при загрузке.
* @param bool $force_sync Определяет, следует ли обходить кэш синхронизации комментариев при загрузке.
* @param string $comment_type Тип отображения комментариев.
*
* @return string
*/
public static function get_discourse_comments( $post_id, $perform_sync = true, $force_sync = false, $comment_type ) {
@Joep_Kannegieter Это приведёт к нескольким последствиям для вашего случая (и для ряда других):
Отображение комментариев будет работать
Вы сможете программно управлять типом отображения комментариев (то есть все комментарии или ссылка на комментарии)
Вы сможете программно управлять кэшем комментариев
Возвращаюсь к этому вопросу; в целом «я заставил это работать», но не с шаблоном Bricks Builder.
Когда я переключаюсь на тему twentytwenty, интеграция с Discourse отображается ниже поста в блоге, заменяя поле «Комментарии»:
При использовании Bricks Builder есть элемент «Комментарии», который загружает комментарии WP; он не заменяется плагином. Также это не вызывается программно:
Ошибка: Слишком мало аргументов для функции WPDiscourse\Utilities\Utilities::get_discourse_comments(), передан 1 в /home/u43655p432443/domains/domain.nl/public_html/wp-content/themes/bricks/includes/elements/code.php(159) : eval()'d code на строке 4, а ожидается ровно 4
Так что проблема связана с Bricks. Я также обращусь к сообществу Bricks.
Эта ошибка указывает на то, что ваш вызов утилитарной функции get_discourse_comments требует обновления. Вот пример того, как её можно использовать.
global $post;
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
$discourse_comments = DiscourseUtilities::get_discourse_comments($post->ID, true, true, 'display-comments');
echo $discourse_comments;