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의 분류(taxonomy) 시스템이 본질적으로 변경 가능하다는 사실(즉, 플러그인이 설치된 모든 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 ) { 함수와 관련하여 too few arguments(인수가 너무 적음) 오류가 발생합니다. $category가 정의되지 않아서 그런 걸까요? 나중에 더 테스트해 볼 수 있습니다.
이 기능을 공식 기능으로 추가하는 것에 대해, 다음 두 가지 옵션을 고려하면 그렇게 복잡한 문제가 되지 않을 것 같습니다:
또는
네, 맞습니다. 오타로 인해 죄송합니다.
API를 통해 카테고리 목록을 읽는 것(카테고리 업데이트 강제)과 WordPress와 Discourse 간에 카테고리 자체를 자동으로 동기화하는 것 사이에는 큰 차이가 있습니다.
wp_categories를 discourse_tags에 매핑하는 데에도 비슷한 코드가 작동할까요?
"카테고리는 벽이다"라는 삶을 살고 있습니다 ![]()
아쉽게도 현재 wpdc_publish_post_tags 필터와 동일한 기능이 없습니다.
태그로 정확히 어떤 것을 달성하고자 하시나요?
policies라는 커스텀 포스트 타입이 있고, 2단계(부모/자식)로 구성된 계층형 커스텀 분류법 policy_categories가 있습니다. 자식 카테고리가 약 45개 있습니다.
WP Discourse를 설정하여 policies라는 Discourse 카테고리에 게시하도록 했습니다. 다만, 이 포럼에서 여러 자료를 살펴본 결과, 거대한 하위 카테고리 집합을 만드는 것보다 하위 카테고리를 태그로 생성하는 것이 더 나은 것 같습니다.
다양한 경험 수준의 여러 WordPress 사용자가 policies를 게시할 예정입니다(저 혼자만 이 작업을 수행한다면 매번 직접 태그를 붙였을 것입니다). 따라서 추가적인 단계를 줄이고 지원 관련 부담을 덜기 위해, WP Discourse가 WordPress 카테고리를 가져와서 해당 Discourse 태그를 추가하도록 하는 필터가 있으면 이상적입니다.
관리자로 이러한 항목의 업데이트를 관리할 예정이므로, 카테고리와 태그의 ID/슬러그 등이 일치하도록 하는 것은 기꺼이 진행하겠습니다.
도움 주셔서 감사합니다.
이건 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);