안녕하세요, WordPress와 Discourse의 카테고리를 동기화하는 방법에 대해 도움을 받을 수 있을까요?
예를 들어, 제 웹사이트에서 사용자가 새 카테고리를 생성하면 Discourse에도 해당 카테고리가 생성되고, 게시글과 포럼 주제 모두 동일한 카테고리를 가지도록 하고 싶습니다.
안녕하세요, WordPress와 Discourse의 카테고리를 동기화하는 방법에 대해 도움을 받을 수 있을까요?
예를 들어, 제 웹사이트에서 사용자가 새 카테고리를 생성하면 Discourse에도 해당 카테고리가 생성되고, 게시글과 포럼 주제 모두 동일한 카테고리를 가지도록 하고 싶습니다.
이 코드는 완전히 테스트되지 않았으며, 프로덕션 환경에서 사용하려면 오류 처리/안전성 검사/로그 기록이 필요합니다. 하지만 시작하는 데는 도움이 될 것입니다:
add_action( 'create_category', 'discourse_create_category', 10, 1 );
function discourse_create_category( $term_id ) {
$category = get_term_by( 'id', $term_id, 'category' );
$name = $category->name;
$path = '/categories.json';
// WPDiscourse 플러그인을 사용하여 새 카테고리를 생성합니다
new \WPDiscourse\Utilities\PublicPluginUtilities()->discourse_request(
$path,
[
'method' => 'POST',
'name' => $name,
]
);
}
add_action( 'set_object_terms', 'discourse_set_object_terms', 10, 1 );
function discourse_set_object_terms( $object_id ) {
if ( ! metadata_exists( 'post', $object_id, 'publish_to_discourse' ) ) {
// 초기 저장 시에만 Discourse 게시를 활성화합니다.
update_post_meta( $object_id, 'publish_to_discourse', true );
$discourse_publish_option = get_option( 'discourse_publish' );
// WP 카테고리에 기반하여 Discourse 카테고리를 설정합니다
if ( is_array( $discourse_publish_option ) && array_key_exists( 'publish-category', $discourse_publish_option ) ) {
$categories_list = wp_get_post_categories( $object_id );
update_post_meta( $object_id, 'publish_post_category', $categories_list[0]->name );
}
}
}
게리, 답변해 주셔서 감사합니다!
불행히도 다음 줄에서 “syntax error, unexpected ‘->’ (T_OBJECT_OPERATOR)” 오류가 발생하고 있습니다:
new \WPDiscourse\Utilities\PublicPluginUtilities()->discourse_request(
PHP 버전은 7.4입니다. 이 버전에서는 정상적으로 작동해야 합니다. 오류가 발생하는 이유에 대해 전혀 감이 오지 않습니다.
내가 테스트하지 않았다고 말했었지, 그렇지?
현재 디버깅에 대해 많이 도와줄 수는 없지만, 해당 문제를 수정하고 두 번째 액션에서 중복된 체크를 제거한 업데이트된 버전을 공유합니다:
add_action( 'create_category', 'discourse_create_category', 10, 1 );
function discourse_create_category( $term_id ) {
$category = get_term_by( 'id', $term_id, 'category' );
$name = $category->name;
$path = '/categories.json';
// WPDiscourse 플러그인을 사용하여 새 카테고리를 생성합니다
$utils = new \WPDiscourse\Utilities\PublicPluginUtilities();
$utils->discourse_request(
$path,
[
'method' => 'POST',
'name' => $name,
]
);
}
add_action( 'set_object_terms', 'discourse_set_object_terms', 10, 1 );
function discourse_set_object_terms( $object_id ) {
if ( ! metadata_exists( 'post', $object_id, 'publish_to_discourse' ) ) {
// 초기 저장 시에만 Discourse 게시를 활성화합니다.
update_post_meta( $object_id, 'publish_to_discourse', true );
$discourse_publish_option = get_option( 'discourse_publish' );
// WP 카테고리를 기반으로 Discourse 카테고리를 설정합니다
if ( is_array( $discourse_publish_option ) ) {
$categories_list = wp_get_post_categories( $object_id );
update_post_meta( $object_id, 'publish_post_category', $categories_list[0]->name );
}
}
}
7.4는 EOL(지원 종료)까지 약 3개월밖에 남지 않았으므로, 아직 진행하지 않았다면 호스팅 환경 업그레이드를 계획하기 시작하는 것이 좋습니다 ![]()
네, 잘하셨네요
그런데 제가 코딩을 잘 못해서解决方案을 여기저기 찾아보게 됩니다. 아직 프리랜서를 찾지 못해서, 혼자서 해결하거나 조언을 받아서 해결해볼까 하고 있었습니다 ![]()
다시 한번 감사드립니다. 확인해볼게요!