Проблемы с настройкой AJAX-комментариев

Скриншоты:






Ниже приведён фрагмент повторяющихся ошибок в логах:

[2022-04-16 00:08:52] comment_formatter.ERROR: format.missing_post_data {"keys":"discourse_permalink,discourse_comments_raw"} 
[2022-04-16 00:09:06] comment_formatter.ERROR: format.missing_post_data {"keys":"discourse_permalink,discourse_comments_raw"} 
[2022-04-16 00:09:08] comment_formatter.ERROR: format.missing_post_data {"keys":"discourse_permalink,discourse_comments_raw"} 
[2022-04-16 00:09:50] comment_formatter.ERROR: format.missing_post_data {"keys":"discourse_permalink,discourse_comments_raw"}

При создании новой публикации всё работает, и тема успешно создаётся. Однако, когда в Discourse появляется комментарий, он не синхронизируется с WordPress.

Я почти ничего не менял, настройки вы видите выше. Есть какие-то идеи, что я делаю не так или просто упустил?

Я следовал инструкциям здесь:

редактирование:
У меня возникает та же ошибка, но в форумах это был единственный результат поиска:
comment_formatter.ERROR: format.missing_post_data

Это известная проблема? Или её можно решить?

Привет,

  1. Если возможно, не могли бы вы дать ссылку на пост на вашем сайте WordPress, где вы столкнулись с этой проблемой?
  2. Есть ли у вас причина использовать AJAX-комментарии? (у вас отмечена опция «Загружать комментарии с помощью AJAX»).

Привет, Энгус,

  1. Да, конечно: 60 Linux Networking commands and scripts (на данный момент это единственный синхронизированный пост).
  2. Я проверил Ajax только как крайнее средство, после того как несколько часов ничего не работало полноценно. Теперь я снял галочку с Ajax. Полагаю, без вебхуков синхронизация занимала слишком много времени.

Кажется, теперь всё работает, но формат немного неуклюжий. Думаю, мне нужно разобраться с CSS?

Также, есть ли способ отображать ссылки типа «присоединиться к обсуждению» на главной странице нашего форума Discourse для старых постов из WordPress? Иными словами, если под постом нет комментариев или пост ранее не был синхронизирован с Discourse, плагин должен добавлять общую ссылку на главную страницу моего форума Discourse, вместо того чтобы оставлять поле пустым.

Огромное спасибо за помощь.

Да, способ отображения зависит от вашей темы. В самом плагине минимальная стилизация.

Ссылка «Присоединиться к обсуждению» не будет отображаться для тем, которые не связаны. Вы можете добавить что-то подобное самостоятельно, отдельно от плагина, используя фильтр comments_template в файле functions.php вашей темы. Я не тестировал этот код, но что-то вроде этого должно работать:


use WPDiscourse\Utilities\Utilities as DiscourseUtilities;

function non_discourse_comments_template( $comment_template ) {
   global $post;
   $post_id = $post->ID;
   $discourse_post_id = get_post_meta( $post_id, 'discourse_post_id', true );

   if ($discourse_post_id) {
     return;
   } else {
     $options = DiscourseUtilities::get_options();
     $discourse_permalink = $options['url'];
     $link_text = "Присоединиться к обсуждению";
     return '<div class="wpdc-join-discussion"><a class="wpdc-join-discussion-link" href="' . esc_url_raw( $discourse_permalink ) . '" target="_blank" rel="noreferrer noopener">' . esc_html( $link_text ) . '</a></div>';
   }
}
add_filter( "comments_template", "non_discourse_comments_template" );

Ещё раз спасибо за дополнительную помощь и советы!

Я читал и искал CSS-код, который можно вставить, чтобы хоть немного улучшить макет.

Однако, поскольку я не знаком с CSS/стилизацией (кроме вставки существующего CSS), я хотел бы внести очень простые изменения в стиль импортированных комментариев. А именно: использовать изображения аватаров меньшего размера рядом с именами пользователей Discourse в комментариях и добавить горизонтальную линию между постами:
image

Это достаточно просто, чтобы я мог вставить какой-то код в /admin/customize/themes/1/common/scss/edit?

Редактирование:
Для всех остальных: мне удалось решить проблему изменения размера Gravatar с помощью кода, представленного здесь:

Мне удалось стилизовать комментарии. Мой стиль очень базовый, ха-ха… но это уже улучшение.

Осталось только убрать список участников в нижней части секции комментариев, импортированных из WP-Discourse.

Я не могу использовать этот код, так как он вызывает ошибку из-за использования “self”. Есть ли какое-то обходное решение?

ob_start();
?>
<div id="comments" class="comments-area discourse-comments-area">
<div class="comments-title-wrap">
<h2 class="comments-title discourse-comments-title"><?php echo esc_html( self::get_text_options( 'notable-replies-text' ) ); ?></h2>
</div>
<ol class="comment-list">{comments}</ol>
<div class="respond comment-respond">
<h3 id="reply-title" class="comment-reply-title">
<?php echo esc_html( self::get_text_options( 'continue-discussion-text' ) . ' ' ); ?>
<?php self::discourse_topic_link( self::new_tab() ); ?>
</h3>
<p class="more-replies">{more_replies}</p>
</div>
</div>
<?php
$output = ob_get_clean();

Я удалил эти строки:

<div class="comment-reply-title">
<h4 class="discourse-participants"><?php echo esc_html( self::get_text_options( 'participants-text' ) ); ?></h4>
<p>{participants}</p>
</div>

Однако я не уверен, как решить ошибку синтаксиса “self”, особенно в этих строках:

<?php echo esc_html( self::get_text_options( 'continue-discussion-text' ) . ' ' ); ?>
<?php self::discourse_topic_link( self::new_tab() ); ?>

Я не удалял раздел с участниками. Если вы планируете это сделать, дайте ему шанс, как и другим функциям Discourse; разработчики продумали этот вопрос. Список показывает всех участников даже после импорта только 5 из 15 сообщений (настраиваемый параметр). Кроме того, импортированные ответы исключают сообщения от участников форума 0 уровня, что, на мой взгляд, полезно.

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

Я думаю, что comment_formatter.ERROR: format.missing_post_data слишком поспешно сообщает об ошибках. Я скорректирую это в следующем выпуске. Спасибо, что обратили на это внимание. Пока не стоит беспокоиться, если у вас нет видимых проблем.

Официального руководства по стилизации комментариев нет. Есть несколько других тем, например эта. Темы WordPress бывают самых разных форм и размеров, поэтому изначально было решено оставить этот вопрос на усмотрение администратора сайта. Тем не менее, я считаю, что дополнительные руководства могут быть полезны.

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