Wp-discourse-shortcodes plugin

Я не смог найти никаких вызовов API ни в одном из логов Discourse. :woman_shrugging: Однако хорошая новость в том, что, похоже, мы решили проблему.

Исходный шорткод использовал параметр source="top" и некоторые другие, поэтому я постепенно упрощал его, пока не остался только с настройками по умолчанию (через опущение параметров). У меня было впечатление, что вебхук используется только при source="latest", судя по формулировке флажка в настройках админ-панели WordPress. Но мы включили вебхук для последних тем (и дополнительно ограничили триггер только теми категориями, которые хотели отображать), и когда я добавил обратно родительскую категорию, шорткод начал соблюдать ограничения по категориям! :tada: (Он не соблюдал ограничения по категориям и с source="latest", пока я не включил вебхук, несмотря на очистку кэшированного HTML через админ-панель WordPress и других источников кэширования на нашем сайте.)

После того как я получил желаемый результат с помощью вебхука и source="latest", я вернул источник обратно на “top” и по одному добавил обратно исходные параметры. Пока что он продолжает соблюдать ограничения по категориям. Я оставил вебхук включённым.

Если вебхук действительно помогает (и это не просто какой-то сброс), я предлагаю изменить формулировку на странице админ-панели WordPress с «Использовать вебхук Discourse для обновления списка ‘latest’» на «Использовать вебхук Discourse для обновления списка [discourse_topics]» (или что-то подобное, чтобы было ясно: неважно, какой источник вы используете в списке тем — вебхук, скорее всего, станет тем самым универсальным решением, которое мы ищем). :joy:

Это отличный плагин. Два вопроса по функционалу:

  1. Можно ли отображать изображения внутри постов, как в скрипте встраивания с параметром template=“complete”?..

  2. Можно ли заменять имена пользователей на реальные имена?

Большое спасибо.

Также есть ошибка с вложенными категориями, которые не отображаются. Показываются только темы в основной категории.
Смотрите пример ниже: Общая, но нет Общая >> Новости и события

И снова с плитками и всеми другими атрибутами шорткодов, удалёнными..

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

Чтобы полностью переопределить вывод HTML, используйте следующие два фильтра (то есть их аналоги add_filter):

// Верните false, чтобы использовать собственное форматирование
apply_filters( 'wpds_use_plugin_topiclist_formatting', true );

// Верните собственный вывод HTML из данных discourse_topics
apply_filters( 'wpds_after_topiclist_formatting', $output, $discourse_topics, $args );

Или добавьте дополнительные элементы в существующий HTML:

apply_filters( 'wpds_topiclist_above_header', $output, $topic, $category, $poster_avatar_url, $args );
apply_filters( 'wpds_topiclist_above_footer', $output, $topic, $category, $poster_avatar_url, $args );
apply_filters( 'wpds_topiclist_avatar', $avatar_image, esc_url_raw( $poster_avatar_url ) );
apply_filters( 'wpds_topiclist_below_footer', $output, $topic, $category, $args );

Извините, вы имеете в виду, что тема из вложенной категории отображается, но не отображается её значок категории?

1 лайк

Большое спасибо, Ангус. Это полезно.

Верно. Если тема находится во вложенной категории, значок не отображается. На скриншоте ниже показано отсутствующее изображение значка. Это тема внутри вложенной категории «Общее» >> «Новости и события». Если бы я изменил категорию этой темы на родительскую категорию «Общее», значок отобразился бы, как у второй темы ниже.

1 лайк

Спасибо за уточнение, Райан. На следующей неделе я изучу эту проблему и свяжусь с вами.

1 лайк

Спасибо. К слову, я добавил атрибут «реальное имя» для замены имен пользователей и опубликовал свои изменения в этом репозитории. Я довольно новичок в Git, поэтому извините, что не использовал правильные каналы коммита, но изменения там есть, если они вдруг кому-то пригодятся.

2 лайка

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

Однако кажется, что простым обходным решением может быть закомментирование AJAX-запроса и полное использование вебхука. У нас настроены триггеры для исключения категории сотрудников в вебхуке..

Это работает для временной блокировки новых обсуждений сотрудников до тех пор, пока не будет выполнен AJAX-вызов.

Так что, может быть, просто закомментировать AJAX-вызов?..

Не упускаю ли я что-то, что сделало бы этот подход нецелесообразным?

1 лайк

Возвращаясь к теме

:tada: С радостью сообщаю, что плагин WP Discourse Shortcodes теперь поддерживает (экспериментальную) функцию фильтрации списка тем. :confetti_ball:

Помимо source="latest" или source="top", теперь можно использовать source="filter" и помещать запрос фильтрации в параметр q, например:

[discourse_topics source="filter" q="category:general,site-feedback"]

Не забудьте сначала включить настройку experimental_topics_filter!

Также я исправил несколько ошибок:

  • полностью переработано кэширование (это также устраняет необходимость наличия атрибута id)
  • имена пользователей не отображались на форумах с языком, отличным от английского
  • добавлен фильтр по категориям для latest-AJAX

Плагин всё ещё отсутствует в репозитории плагинов WordPress, поэтому его следует клонировать через git из репозитория:

cd wp-content/plugins
git clone https://github.com/communiteq/wp-discourse-shortcodes

Или, в качестве альтернативы, загрузите этот ZIP-файл для установки.
wp-discourse-shortcodes-0.40.zip (67.6 КБ)

5 лайков

Это потрясающе! Спасибо за отличную работу, теперь открывается целый новый набор возможностей :heart:

1 лайк

Пытаюсь разобраться, но не могу найти информацию о том, является ли это текущей возможностью.

– Я хочу отображать ПОСЛЕДНИЕ СООБЩЕНИЯ во всех/любой категории и теме. —

Информация, которую я хочу отображать:

  • Имя пользователя / Дата публикации
  • Заголовок темы
  • Заголовок категории
  • Краткое описание (45 символов)
  • Лайки (и, возможно, ответы?)

Кто-нибудь знает, возможно ли это?

Плагин использует то, что предоставляет Discourse, поэтому продолжите этот вопрос в теме вашего другого сообщения здесь.

Чуть запоздал с ответом, но спасибо!

1 лайк