我特意在 WordPress 和 Discourse 中设置了完全相同的分类,但没有选项可以将帖子分类设置为主题分类,因此我每次发布后都必须手动设置。
这似乎是一个很明显的功能,也许是我忽略了什么?
我正在使用 WP Discourse 插件。
我特意在 WordPress 和 Discourse 中设置了完全相同的分类,但没有选项可以将帖子分类设置为主题分类,因此我每次发布后都必须手动设置。
这似乎是一个很明显的功能,也许是我忽略了什么?
我正在使用 WP Discourse 插件。
您可以使用 wpdc_publish_post_category 过滤器来实现这一点。它看起来会像这样(未经测试的代码示例,但可能开箱即用):
function wpdc_change_post_category( $category, $post_id ) {
$wp_category_name = get_the_category( $post_id )[0]->name;
$discourse_categories = WPDiscourse\Utilities\Utilities::get_discourse_categories();
$discourse_category = array_search( $wp_category_name, array_column( $discourse_categories, 'name' ));
return $discourse_category['id'];
}
add_filter( 'wpdc_publish_post_category', 'wpdc_change_post_category' );
然后,无论您选择哪个类别,帖子都将始终发布到名称与 WordPress 帖子类别名称匹配的类别。请确保这些名称完全匹配,否则将无法正常工作。
官方支持此功能将充满困难,因为它将依赖用户维护具有完全相同名称的类别列表,假设两个平台之间的类别模型保持不变,并且必须处理 WordPress 的分类系统本质上是可变的这一事实(即,它在安装了该插件的每个 WordPress 上都不会相同)。
谢谢!
您可以使用
wpdc_change_post_category过滤器来实现这一点。它应该类似于(未经测试的示例代码,但可能开箱即用):
您是指 wpdc_publish_post_category 吗?wpdc_change_post_category 似乎并不存在。它只是一个自定义函数名,可以是任何名称,对吗?
$wp_category_name = get_the_category( $post_id )[0]->name 缺少了结尾的 ;。
之后,我收到了一个关于 function wpdc_change_post_category( $category, $post_id ) { 的 参数过少 错误。可能是因为 $category 未定义?我稍后可能会进行更多测试。
关于将其添加为官方功能,我认为这不会太麻烦,考虑到以下两种选择:
或者
是的,没错,抱歉打错了。
通过 API 读取分类列表(强制分类更新)与自动同步 WordPress 和 Discourse 之间的分类本身,这之间存在很大的区别。
将类似的代码用于将 wp_categories 映射到 discourse_tags 是否可行?
我正过着“分类就是墙壁”的生活 ![]()
遗憾的是,目前没有等效的 wpdc_publish_post_tags 过滤器。
您具体想通过标签实现什么目标?
我有一个自定义文章类型“policies”,以及一个分两级(父/子)的自定义分类法“policy_categories”。大约有 45 个子分类。
我已经将 WP Discourse 设置为发布到 Discourse 的“policies”分类中,但与其创建大量的子分类(我已经在这个论坛上阅读过相关内容),不如将子分类创建为标签似乎更好。
我将有各种经验水平的 WordPress 用户发布“policies”(如果只有我一个人做,我每次都会给它们打上标签)。因此,为了节省一个额外的步骤和可能大量的支持麻烦,最好有一个过滤器可以让 WP Discourse 获取 WordPress 分类并添加匹配的 Discourse 标签。
我很乐意确保分类和标签匹配 ID/slug 等,因为我会作为管理员来维护这些内容的任何更新。
感谢您的帮助。
也许这是给#marketplace的?
虽然没有专门的标签过滤器,但有一个通用过滤器可供您使用:wpdc_publish_body。在您的情况下,它看起来像这样
add_filter( 'wpdc_publish_body', function( $body, $remote_post_type, $post_id ) {
// 获取帖子策略分类的代码
if ( // 如果有帖子策略 ) {
$policy_tags = // 将帖子策略分类映射到适当的标签
$body['tags'] = $policy_tags
}
return $body;
}, 10, 3);