Мы интегрировали Discourse на наш сайт WordPress, и ручная публикация работает. Однако я хотел бы настроить автоматическую публикацию в Discourse только тех постов, которые относятся к определенной категории. Я вижу, что можно исключить по тегу, но это не помогает в данном случае. Мне нужно включать по категории. Возможно ли это, и если нет, можно ли добавить это как функцию? Казалось бы, это очень полезная и важная опция, и честно говоря, я был удивлен, обнаружив, что её, похоже, нет. Спасибо.
Привет, @vanclute,
Для этого можно использовать фильтр wpdc_publish_after_save. Добавьте следующий код в файл functions.php вашего WordPress:
function publish_to_discourse( $force_publish, $post_id, $post ) {
return has_term( TERM, TAXONOMY, $post );
}
add_filter( 'wpdc_publish_after_save', 'publish_to_discourse', 10, 3 );
Вам нужно заменить TERM и TAXONOMY на те значения, которые вы используете для «категорий» в WordPress. Обратите внимание, что TERM может быть массивом, например:
array( 'название категории 1', 'название категории 2')
Пример
function publish_to_discourse( $force_publish, $post_id, $post ) {
return has_term( array( 'новости', 'блог' ), 'category', $post );
}
add_filter( 'wpdc_publish_after_save', 'publish_to_discourse', 10, 3 );
Спасибо. На самом деле я бы предпочел не менять файлы WordPress, но я ценю ваши подсказки.
Нет необходимости ничего изменять
Делайте так, как должно быть…
Установите Code Snippet или аналогичный плагин и выполните это через него (конечно, вы можете сделать это как отдельный плагин, если предпочитаете это; разницы нет). Это абсолютно то же самое, что установка компонента темы или плагина для Discourse.
Используйте functions.php только дочерней темы, когда модификация зависит от темы. В данном случае это не так.