Ссылка «Начать обсуждение» в конце поста блога не работает, ведет на topic_url

Я заметил, что ссылка «Начать обсуждение» в конце моего поста в блоге WordPress перестала работать и теперь ведет просто на «topic_url».

Точно не знаю, когда это перестало работать.

Недавно я обновил тему WordPress. После обновления я опубликовал пост в блоге, который, казалось, работал нормально и был опубликован на моем форуме Discourse.

Ниже приведен лог:

[2025-02-11 13:53:50] comment.ERROR: sync_comments.response_error {"message":"","discourse_topic_id":"89","wp_post_id":1521,"http_code":""} 

### Этот файл включен в загрузки логов ###

### Сервер ###

WordPress - 6.7.2
PHP - 8.0.30
MySQL - 10.11.11

### Активные плагины ###

Avada Builder - 3.11.15
Avada Core - 5.11.15
WP-Discourse - 2.5.6

### Настройки WP Discourse (секретные данные исключены) ###

connection-logs - 0
display-subcategories - 1
allow-tags - 1
max-tags - 8
publish-as-unlisted - 0
full-post-content - 1
custom-excerpt-length - 55
add-featured-link - 1
auto-publish - 1
force-publish - 0
force-publish-max-age - 0
publish-failure-notice - 1
auto-track - 1
allowed_post_types - post
exclude_tags - 
hide-discourse-name-field - 1
discourse-username-editable - 0
direct-db-publication-flags - 0
verbose-publication-logs - 0
enable-discourse-comments - 1
comment-type - display-comments
ajax-load - 1
load-comment-css - 1
discourse-new-tab - 1
hide-wordpress-comments - 1
show-existing-comments - 0
max-comments - 8
min-replies - 1
min-score - 0
min-trust-level - 1
bypass-trust-level-score - 50
only-show-moderator-liked - 0
custom-datetime-format - 
cache-html - 0
clear-cached-comment-html - 0
verbose-comment-logs - 0
use-discourse-webhook - 1
webhook-match-old-topics - 0
use-discourse-user-webhook - 0
webhook-match-user-email - 0
verbose-webhook-logs - 1
verbose-sso-logs - 0
enable-sso - 0
auto-create-sso-user - 0
real-name-as-discourse-name - 0
force-avatar-update - 0
redirect-without-login - 0
sso-client-enabled - 1
sso-client-login-form-change - 1
sso-client-sync-by-email - 0
sso-client-sync-logout - 0
logs-enabled - 1

Ссылка на мой WordPress/Discourse: https://www.alphagamer.net/

Привет, @Pieces,

Так что эта конкретная публикация на Discourse прошла именно так, как ожидалось? А затем следующая публикация дала этот неожиданный результат?

Не совсем понимаю, что вы имеете в виду под «следующей публикацией».

Вчера я опубликовал новую запись в блоге. Публикация этой записи прошла, казалось бы, нормально, и она была размещена на моём форуме Discourse, как и ожидалось. Утром я проверил и обнаружил, что ссылка под ней больше не работает (нашёл это случайно). Я ничего особенного не делал: не обновлял ничего и не предпринимал других действий.

Уверен, что раньше всё работало, но не знаю, как давно это перестало работать.

Надеюсь, это проясняет ситуацию.

Понятно, спасибо за уточнение. Когда вы переходите в режим «редактирования» поста, видите ли вы, что тема корректно связана в боковой панели «Discourse»?

Привет @angus, да, там показано, что ссылка установлена, и она, кажется, работает нормально.

Понятно. Это говорит мне о том, что в вашем экземпляре WordPress есть какая-то другая проблема, поскольку данные, которые устанавливают этот URL в окне редактирования записи, совпадают с данными, заполняющими topic_url в шаблоне комментария. Иными словами, данные присутствуют, но по какой-то причине не загружаются в шаблон комментария.

  1. Видите ли вы какие-либо ошибки в ваших PHP-логах? Если вы не уверены, где они находятся, можете ли вы обратиться к вашему хостинг-провайдеру?
  2. Наблюдаете ли вы эту проблему на других записях?
  3. Видите ли вы какие-либо ошибки в консоли вашего браузера?
  4. Попробуйте отключить AJAX-загрузку комментариев в настройках «WP Discourse > Комментарии» и посмотрите, изменится ли что-либо.

Спасибо за ответ, @angus

  1. Мне нужно будет посмотреть на это сегодня вечером, прямо сейчас у меня нет доступа к логам PHP.
  2. Я наблюдаю эту проблему во всех сообщениях.
  3. В консоли браузера я вижу только проблему, связанную с куки (заблокировано) (я не думаю, что это связано, но буду рад получить ваши рекомендации, если это так).
  4. Я отключил Ajax, и это, похоже, исправляет ссылку, однако за ссылкой появляется много дополнительных символов, которых нет в ссылке, определенной в моем сообщении в блоге на WordPress (например, www.mydomain/post/1 превратилось в www.mydomain/post/1?_ahsdkhsdkhkh*lnnjasdfa).

Привет @angus, я понял, что установил дочернюю тему 6 месяцев назад, чтобы публиковать посты WordPress как onebox на Discourse.

Я снова активировал основную тему, но проблема осталась (если включить Ajax обратно), поэтому я вернулся к своей дочерней теме и отключил Ajax.

Ниже представлен код файла functions.php моей дочерней темы, который обеспечивает работу onebox.

<?php

function theme_enqueue_styles() {
    wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', [] );
}
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles', 20 );

function avada_lang_setup() {
	$lang = get_stylesheet_directory() . '/languages';
	load_child_theme_textdomain( 'Avada', $lang );
}
add_action( 'after_setup_theme', 'avada_lang_setup' );

// Публикация поста WordPress как onebox на Discourse
function wpdc_custom_publish_format_html( $input, $post_id ) {
	$permalink = get_the_permalink( $post_id );
	ob_start();
	echo $permalink;
	$output = ob_get_clean();

	return $output;
}
add_filter( 'discourse_publish_format_html', 'wpdc_custom_publish_format_html', 10, 2 );

Хорошо, проблема может быть связана со скриптами и/или Ajax на вашем WordPress. Почему вы включили загрузку через Ajax? Есть ли у вас какие-либо возражения против того, чтобы оставить его отключенным?

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

Кажется, эта функция была включена при установке плагина. Если нет, то я не включал её по какой-то конкретной причине. Просто странно, что она перестала работать без явной причины (кроме обновления WordPress или темы).

Пока оставлю её отключённой.

Эта настройка по умолчанию отключена. Если в вашей теме или на сайте есть проблемы с JavaScript, это может вызвать сбои при AJAX-загрузке.

Да, я думаю, это решение. Использовать AJAX-загрузку комментариев нужно только если у вас есть для этого конкретная причина.

Привет, @angus,

Я заметил кое-что сегодня. Я вышел из системы WordPress и обнаружил, что ссылка не работает, если я не авторизован (даже если Ajax отключён).

Когда я захожу в WordPress, а затем открываю свою запись в блоге, ссылка работает.

Есть ли у тебя какие-либо идеи, что может вызывать это?

Привет @Pieces, это, скорее всего, связано с вашим сайтом, а не с этим плагином. Похоже, что в определённых ситуациях что-то мешает загрузке пользовательских полей записей в вашем WordPress.

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

Привет, @angus!

Какой процесс лучше всего подойдёт для отключения моего WordPress от Discourse? Достаточно ли просто удалить (удалить) плагин в WordPress (в разделе плагинов в WordPress) и удалить API-ключ и вебхук в Discourse?

Не упустил ли я что-то?

Спасибо, Pieces.

Вам нужно только удалить плагин из WordPress, но да, вы также можете сделать и эти другие вещи.