WP Discourse로 WordPress에서 Discourse로 게시글 게시하기

WP Discourse 플러그인을 사용하여 WordPress 게시물을 Discourse에 게시하여 커뮤니티가 WordPress 콘텐츠에 대해 논의할 수 있습니다. 게시 설정을 구성하려면 먼저 WordPress에 WP Discourse 플러그인을 설치하고 Discourse에 연결해야 합니다. 시작할 준비가 되었다면, 먼저 이 짧은 비디오를 시청하거나 아래 설명을 따르세요.

다음 단계

게시 설정을 완료한 후, 다음 주제들을 확인해 보시기 바랍니다.


설명서

게시 설정

:warning: 설정을 변경한 후에는 항상 저장해야 합니다. 페이지 하단의 ‘옵션 저장’ 버튼을 클릭하세요.

설정 항목들은 비교적 명확합니다. 이해가 어려운 항목이 있다면 이 주제에 답변을 남겨 추가 설명을 요청해 주세요.

기본 Discourse 카테고리

게시물이 Discourse에 게시될 기본 카테고리를 설정합니다. 이 설정은 WordPress의 새 게시물 작성 화면에서 개별 게시물별로 덮어쓸 수 있습니다.

하위 카테고리 표시

WordPress에서 게시할 수 있는 카테고리로 포럼의 하위 카테고리를 사용하고자 하는지 여부를 나타냅니다. 하위 카테고리가 기본 Discourse 카테고리 옵션 입력 필드에 사용 가능하도록 나타나려면 이 설정을 저장해야 합니다.

카테고리 업데이트 강제

포럼에 새 카테고리를 추가했으며 WordPress 사이트에서 사용 가능하도록 하려는 경우에 사용합니다. 이 설정을 활성화하고 옵션 페이지를 저장하면 Discourse에 단일 API 호출을 하여 Discourse 카테고리를 가져옵니다. 활성화한 후, 댓글 탭으로 다시 이동하면 설정이 비활성화되어 있는 것을 볼 수 있습니다.

태그 허용

WordPress를 통해 생성된 Discourse 주제에 태그를 추가하기를 원하면 활성화하세요.

비공개 주제로 게시

WordPress에서 게시된 게시물이 Discourse에서 비공개(unlisted)로 표시되도록 합니다. 댓글 데이터 동기화 웹훅 설정을 활성화하면, 비공개 게시물이 Discourse에서 첫 번째 답변을 받을 때 공개됩니다.

전체 게시물 내용 사용

발췌문 대신 전체 WordPress 게시물을 Discourse 포럼에 게시할 수 있게 합니다. Discourse에서 게시물 아래에 전체 게시물 보기 버튼이 표시되지 않도록 하려면, Discourse의 embed truncate 사이트 설정을 해제해야 합니다(yourforum.com/admin/site_settings/category/posting에서 찾을 수 있음).

사용자 정의 발췌 길이

전체 게시물 내용 사용 설정을 선택하지 않은 경우, 이 설정은 해당 길이의 발췌문을 생성하여 Discourse에 게시합니다. WordPress 게시물 생성 시 발췌 메타 박스에 발췌문을 추가하여 수동으로 발췌문을 생성할 수도 있습니다.

자동 게시

Discourse에 게시될 게시물 유형에 대해, 새 게시물 작성 화면에 나타나는 Discourse에 게시 체크박스를 미리 선택합니다. 게시물 생성 시 체크박스를 해제할 수 있습니다.

게시된 주제 자동 추적

이 설정은 기본적으로 활성화되어 있습니다. 활성화되면 WordPress에서 Discourse로 게시된 게시물의 작성자는 해당 주제를 자동으로 ‘감시(Watching)’ 상태가 됩니다(모든 새 답변에 대한 Discourse 알림을 받음).

게시할 게시물 유형

이 설정은 반드시 설정해야 합니다. 기본값은 post이지만, 페이지와 사용자 정의 게시물 유형도 선택할 수 있습니다.

태그별 게시물 제외

이 설정에 WordPress 태그를 추가하면, 해당 태그 중 하나를 가진 WordPress 게시물은 Discourse에 게시되지 않습니다.

Discourse 이름 필드 비표시

이것은 사용자 프로필에서 “Discourse 사용자 이름” 필드를 숨깁니다. Discourse 사용자 이름은 게시물을 Discourse에 게시할 때 주제의 작성자를 설정하는 데 사용됩니다.

Discourse 사용자 이름 수정 가능

관리자가 아닌 사용자가 자신의 프로필에서 자신의 Discourse 사용자 이름을 수정할 수 있는지를 결정합니다. Discourse 사용자 이름은 게시물을 Discourse에 게시할 때 주제의 작성자를 설정하는 데 사용됩니다.

직접 데이터베이스 게시 플래그

이 설정은 특수한 WordPress 환경을 가진 특정 설정에서 사용됩니다. 이 설정이 무엇을 하는지 알지 않는 한 사용하지 마세요.

상세 게시 로그

이 설정을 활성화하면 Discourse에 게시된 모든 게시물이 성공하더라도 WP Discourse 로그에 기록됩니다. 일반적으로 오류만 기록됩니다.

XMLRPC를 통한 게시 활성화

XML-RPC는 블로그 소프트웨어가 WordPress로 게시물을 보내는 데 자주 사용되는 원격 절차 호출(RPC)입니다. 이 절차를 사용하는 앱에는 wordpress.com 블로그 앱이 포함됩니다.

기본적으로 WP Discourse는 XML-RPC를 통해 생성된 게시물을 Discourse에 게시하지 않습니다. 그 이유는 블로그 소프트웨어를 통해 게시된 게시물이 Discourse에 게시되도록 의도되었는지 여부를 나타내는 좋은 방법이 없기 때문입니다.

블로그 소프트웨어를 사용하여 Discourse에 직접 게시될 게시물을 생성하려면, 테마의 functions.php 파일에 wp_discourse_before_xmlrpc_publish 필터에 연결하는 코드를 추가해야 합니다. wp_discourse_before_xmlrpc_publish 필터는 필터에 연결된 함수에 두 개의 인자를 전달합니다. 첫 번째 인자인 $publish_to_discourse는 XML-RPC 게시를 비활성화하기 위해 false로 설정된 불리언 값입니다. 두 번째 인자는 post 객체입니다.

모든 XML-RPC 게시물이 Discourse에 자동으로 게시되도록 하려면 항상 true를 반환하는 함수를 작성해야 합니다. 다음과 같은 코드를 사용하세요:

경고: 이 경우 XML-RPC를 통해 게시된 모든 게시물이 Discourse에 게시되며, 블로그 소프트웨어에서 수정된 오래된 게시물도 포함됩니다.

add_filter('wp_discourse_before_xmlrpc_publish', 'my_namespace_xmlrpc_publish', 10, 2 );
function my_namespace_xmlrpc_publish( $publish_to_discourse, $post ) {
  return true;
}

게시물 태그별 XML-RPC 게시물 필터링

wordpress.com 블로그 앱은 게시물에 태그를 추가할 수 있습니다. 태그는 게시물이 Discourse에 게시될지 여부를 제어하는 데 사용할 수 있습니다. ‘discourse’ 태그가 있는 게시물만 게시하려면 다음과 같은 코드를 사용하세요:

add_filter('wp_discourse_before_xmlrpc_publish', 'my_namespace_xmlrpc_publish_by_tag', 10, 2 );
function my_namespace_xmlrpc_publish_by_tag( $publish_to_discourse, $post ) {
  if ( has_tag( 'discourse', $post ) ) {
    return true;
  }
  return false;
}

이 방법을 사용하되 게시된 게시물에 discourse 태그가 표시되지 않도록 하려면, 다음과 같은 코드를 사용하여 태그를 제거할 수 있습니다:

add_filter( 'term_links-post_tag', 'my_prefix_remove_discourse_tag' );
function my_prefix_remove_discourse_tag( $tags ) {
    foreach( $tags as $key => $value ) {
        if ( strpos( $value, 'discourse' ) ) {
            unset( $tags[ $key ] );
        }
    }

    return $tags;
}

게시물 날짜별 XML-RPC 게시물 필터링

특정 날짜 이후에 게시된 게시물만 XML-RPC를 통해 Discourse에 게시되도록 하려면, functions.php 파일에 다음과 같은 코드를 추가하세요. 이 코드는 2016년 1월 1일 이후에 게시된 모든 게시물이 Discourse에 게시되도록 허용합니다.

add_filter('wp_discourse_before_xmlrpc_publish', 'my_namespace_xmlrpc_publish_by_date', 10, 2 );
function my_namespace_xmlrpc_publish_by_date( $publish_to_discourse, $post ) {
  if ( strtotime( $post->post_date ) > strtotime( '2016-01-01') ) {
    return true;
  }
  return false;
}

할 일: 수정된 게시물이 아닌 새 게시물만 XML-RPC를 통해 게시할 수 있도록 wp-discourse 플러그인에 필터를 추가.

사용자 정의 게시물 유형에 대한 사용 가능한 카테고리 필터링

Discourse 카테고리가 WordPress admin/post-new 페이지의 Discourse에 게시 메타 박스에 표시되기 전에, WordPress 필터 'wp_discourse_publish_categories'가 적용됩니다. 이 필터에는 Discourse 카테고리 배열과 현재 게시물이 인자로 전달됩니다. 이를 테마의 functions.php 파일에서 특정 게시물 유형에 대해 사용 가능한 카테고리를 제한하는 데 사용할 수 있습니다.

다음은 'acme_product' 게시물 유형을 생성한 후, 해당 유형의 게시물에 대해 Discourse 카테고리 'fun’과 'scratch’를 게시 메타 박스에 표시되도록 반환하는 예시입니다.

// 게시물 유형 생성.
add_action(  'init', 'my_namespace_create_post_type' );
function my_namespace_create_post_type() {
  register_post_type( 'acme_product',
    array(
      'labels' => array(
      'name' => __( 'Products' ),
      'singular_name' => __( 'Product' )
    ),
    'public' => true,
    'supports' => array( 'title', 'editor', 'comments', 'custom-fields' ),
    'has_archive' => true,
    'show_in_rest' => true,
    )
  );
}

// 'acme_product' 게시물 유형에 대한 사용 가능한 카테고리 필터링.
add_filter( 'wp_discourse_publish_categories', 'my_namespace_filter_categories', 10, 2 );
function my_namespace_filter_categories( $categories, $post ) {
   if ( 'acme_product' === get_post_type( $post ) ) {
     $output = [];
     foreach ( $categories as $category ) {
        if ( 'fun' === $category['name'] || 'scratch' === $category['name'] ) {
          $output[] = $category;
        }
     }
     return $output;
   }
   return $categories;
}

특정 게시물 유형에 특정 카테고리를 엄격하게 적용하려면(즉, 1:1 매핑), wpdc_publish_post_category를 사용해야 합니다.

function wpdc_change_post_category( $category, $post_id ) {
  if ( 'acme_product' === get_post_type( $post ) ) {
       $categories = WPDiscourse\Utilities\Utilities::get_discourse_categories();
       $fun_category = array_search( 'fun' , array_column( $categories, 'name' ));
       return $fun_category;
  } else {
       return $category;
  }
}
add_filter( 'wpdc_publish_post_category', 'wpdc_change_post_category' );

연결된 Discourse 주제의 메타데이터 표시

게시 설정을 구성한 후에는 템플릿 커스터마이징을 사용하여 Discourse 주제에 대한 메타데이터를 표시할 수 있습니다.

먼저 수정할 템플릿을 결정해야 합니다. 예를 들어, 주제 메타데이터만 표시하고 댓글을 답변으로 표시하지 않으려면 no_replies 템플릿을 수정해야 합니다.

템플릿을 선택한 후에는 Discourse 주제 메타데이터를 추가하도록 수정할 수 있습니다. 코드가 무엇을 하는지 설명하는 주석이 포함된 스니펫은 다음과 같습니다.

// 선호하는 방법으로 wp-discourse가 존재하는지 확인,
// 예: https://wordpress.stackexchange.com/questions/127818/how-to-make-a-plugin-require-another-plugin

// wp-discourse 플러그인의 플러그인 유틸리티를 포함
require_once ABSPATH . 'wp-content/plugins/wp-discourse/lib/plugin-utilities.php';
use WPDiscourse\Shared\PluginUtilities;

// 플러그인 유틸리티를 쉽게 포함할 수 있도록 주제 메타데이터 템플릿을 클래스로 캡슐화
class DiscourseTopicMetadata {
  
  // 클래스에 wp 플러그인 유틸리티 포함
  use PluginUtilities;
  
  public function __construct() {

    // 클래스 초기화 시 템플릿 필터 추가
    add_filter( 'discourse_no_replies_html', array( $this, 'topic_metadata_html' ) );
  }

  function topic_metadata_html( $input ) {
    // 게시물 메타데이터에서 discourse 영구 링크 가져오기
    $discourse_permalink = get_post_meta( get_the_ID(), 'discourse_permalink', true );

    // 플러그인 유틸리티의 헬퍼 메서드를 사용하여 인증을 처리하면서 discourse 영구 링크를 이용해 Discourse에서 주제 JSON 가져오기
    $topic = $this->get_discourse_topic($discourse_permalink);
   
    // 표시하려는 주제 메타데이터를 포함하여 마크업 출력
    ob_start();
    ?>
    <div id="discourse-topic-meta">
        <div class="views">
          Views
          <?php echo $topic->views; ?>
        </div>
        <div class="replies">
          Replies
          <?php echo $topic->reply_count; ?>
        </div>
    </div>
    <?php
    
    return ob_get_clean();
  }
}

// 필터를 추가하기 위해 클래스 인스턴스화
new DiscourseTopicMetadata();

get_discourse_topic 응답에서 사용할 수 있는 주제 메타데이터에 대한 자세한 내용은 Discourse API Docs 을 참조하세요.

10개의 좋아요

이전에 게시된 블로그 글을 가져올 수 있나요? 예를 들어, 지난 30일 이내에 작성된 블로그 글을 가져와 해당 카테고리에 조금이라도 콘텐츠를 채우고 싶습니다. 감사합니다.

2개의 좋아요

현재 일괄 가져오기 옵션이 없습니다. 대신 기존 게시글을 각각 편집하여 Discourse에 게시할 수 있습니다.

2개의 좋아요

저는 사이트 설정을 통해 WordPress에 로그인하는 사용자를 소수로 제한하고 있습니다(작성자만). 반면 Discourse는 사실상 누구나 사용할 수 있습니다. 인증은 Discourse를 통해 이루어집니다.

WordPress에서 생성된 아티클이 Discourse의 토픽으로 게시될 때, “System”(또는 게시 사용자 이름에 설정한 값) 대신 해당 Discourse 사용자의 이름을 표시하고 싶습니다.

즉, 게시 사용자 이름이 "System"으로 설정되어 있다고 가정하겠습니다. Joe Blow가 WordPress에 새 아티클을 게시하면, Joe Blow는 Discourse에도 존재합니다(인증이 Discourse를 통해 이루어지므로 모든 WordPress 사용자는 동시에 Discourse 사용자이기도 합니다). 저는 이 토픽이 System이 아닌 Joe Blow가 게시한 것으로 표시되기를 원합니다. 이후 같은 사이트에서 Jane Doe가 아티클을 게시하면, Discourse의 해당 토픽이 System이 아닌 Jane Doe가 게시한 것으로 표시되기를 원합니다.

이것이 가능한가요?

잘 모르겠어요. 하지만 Publish 탭을 확인해서 마지막 옵션인 Single User API Key Publication을 보면, 그걸 먼저 시도해 볼 것 같아요.

DiscourseSSO(혹은 WordPress와 연결하는 다른 방식)를 사용하고 있다면, WordPress를 거치지 않고 포럼에 가입하는 것은 불가능합니다. 그래서 WordPress가 Discourse의 편집자 계정을 관리한다면, 모든 사람에게 먼저 WordPress 가입을 요구하지 않고 어떻게 그걸 할 수 있을까요? 그런 기능이 있으면 저도 쓰고 싶어서 궁금합니다.

(또다시 오프토픽이네요 :man_facepalming:)

DiscourseConnect 클라이언트 설정을 사용했습니다. 이 설정은 Discourse를 인증 시스템으로 사용하며, 사용자가 존재하지 않는 경우 WordPress에 사용자를 생성합니다. 플러그인 설명서의 내용입니다.

사이트를 DiscourseConnect 클라이언트로 설정하면 WordPress 사용자 인증이 Discourse 포럼 또는 WordPress 사이트를 통해 처리됩니다. DiscourseConnect 링크를 통해 Discourse 사용자가 WordPress에 로그인하면 해당 사용자의 Discourse 자격 증명을 기반으로 인증됩니다. 해당 사용자가 아직 WordPress 사이트에 존재하지 않는 경우 새 사용자가 생성됩니다.

WordPress에서는 사용자가 초기에 구독자(subscriber)로 설정되며, 필요에 따라 수동으로 저자(author) 권한으로 변경할 계획입니다. 또한, 비등록 사용자는 모든 콘텐츠를 볼 수 있도록 사이트를 구성할 것이며, 사용자는 실제로 글을 게시하고 싶을 때만 WordPress에 등록하면 되도록 할 것입니다.

WordPress의 모든 사용자는 먼저 Discourse에 등록해야 하며, 이후 커넥터가 자동으로 사용자를 WordPress에 로그인시키거나, 계정을 생성한 후 로그인시키게 됩니다.

네, 맞습니다. 하지만 다른 모든 인증 방식을 무시하고, 일반 포럼 사용자가 Discourse에 접근하려면 먼저 WordPress에 가입해야 합니다.

아니면 제가 무언가를 잘못 이해하고 있는 걸까요?

제가 확인한 바로는, 일반 Discourse 사용자는 WP 사이트로 갈 필요가 전혀 없습니다. Discourse 사이트에서 링크를 따라가기로 결정하면 자동으로 WP 사이트에 등록됩니다.

제가 무슨 말을 하고 있는지 보시려면 두 사이트를 자유롭게 확인해 보시기 바랍니다. 아직 완성 단계는 아니지만, 해당 부분은 이제 정상적으로 작동합니다.
Https://forum.oursail.boats가 Discourse 사이트이고,
Https://www.oursail.boats가 WP 사이트입니다.

WP 사이트에서 계정을 생성해 보세요. 그곳의 메시지를 보고 답글을 남길 수 있습니다.

그 다음 WP 사이트로 가서 로그인 메뉴 항목을 선택해 보세요. WP 로그인을 건너뛰고 대신 Discourse 로그인으로 연결됩니다(사용자 설정에 따라 다름). 로그인 상태를 유지하도록 옵션을 선택해 두었다면, 프롬프트조차 표시되지 않습니다. 로그인한 후 즉시 WP 사이트로 돌아갑니다.

Wordpress에서 게시물을 작성하는 사용자의 프로필에 Discourse 사용자 이름이 입력되어 있는지 확인하면 됩니다. 사용자가 Discourse 사용자 이름을 설정해 두었다면, Wordpress에서 작성한 게시물은 해당 사용자 이름으로 Discourse에 게시됩니다.

이를 수동으로 업데이트하거나, Update Userdata 웹훅을 사용하여 자동으로 업데이트할 수 있습니다(WP Discourse의 “Webhooks” 설정 참조).

3개의 좋아요

WP에서 게시된 393개의 게시물을 하나씩 수동으로 편집하기 전에, 이것이 여전히 유효한지 다시 한번 확인하고 싶습니다. 즉, 여전히 일괄 가져오기 옵션이 없는 것이 맞는지요? 감사합니다!

일괄 가져오기 옵션은 없습니다. Discourse에 393개의 게시물을 게시하면 393개의 주제 스텁이 생성된다는 점을 유념하세요. 더 집중적인 전략을 고려해 보시는 것을 권합니다. 커뮤니티가 실제로 무엇을 논의할 예정인가요?

2개의 좋아요

제 추측으로는 그렇지 않을 것입니다. Discourse는 단순히 댓글 기능을 대체하기 위해 사용될 뿐, 다른 용도는 없습니다. 따라서 이는 Discourse를 위한 것이 아니라 WordPress를 위한 것입니다.

저도 비슷한 상황에 있었습니다. 세계 대부분의 WordPress 게시물은 어떤 형태의 댓글도 받지 않거나, 있더라도 대개 단순한 노이즈일 뿐이었기 때문에 제 블로그도 예외는 아니었습니다. 하지만 모든 콘텐츠를 한꺼번에 다루는 대신, 기존 WP 콘텐츠를 활용하여 Discourse에서 활동을 촉발했습니다. 모든 게시물을 한꺼번에 연결한 것이 아니라, 점진적으로 연결했습니다. 예를 들어, 현재 개들의 열사병이나 트레일에서 섭취해야 할 칼로리 수에 대한 활성 토픽이 있는데, 이는 Discourse에서 새 생명을 얻은 오래된 게시물들입니다.

모든 것을 일괄적으로 연결할 수 있는 옵션이 있다면, 저는 그렇게 할 것입니다. 이러한 잠재력을 놓치고 있다는 것을 알면서도요. 만약 일괄 연결 옵션을 코딩할 수 있다면, 그 기능을 6피트 아래에 묻어버리라고 말할 수도 있겠습니다. :wink:

2개의 좋아요

저는 Ghost가 댓글 기능을 지원하지 않기 때문에(댓글용으로 Discourse를 연결할 수는 있지만), 웹사이트를 WordPress에서 Ghost로 이전하기 전에 모든 댓글을 Discourse로 가져오려고 하고 있습니다.

하지만 방금 깨달은 점이 있습니다. 모든 WordPress 게시물을 가져오기 전에 먼저 새로운 Ghost를 Discourse에 연결하면 해결될 수 있을 것 같습니다… 아마도 (/me는 가서 그걸 시도해 보러 갑니다…)

이것은 WP의 댓글을 Discourse로 이전하지 않습니다. 단순히 WordPress에 Discourse 게시글을 표시할 뿐입니다.

제가 제대로 이해했다면…

1개의 좋아요

그래, Ghost로 이주를 앞두고 있다면 워드프레스 글과 디스커스 주제를 연결하는 건 아무런 의미가 없어요.

안녕하세요, 여러분!

드디어 Discourse로 커뮤니티 설정을 완료했습니다! 현재 스테이징 사이트에서 WP Discourse 플러그인을 테스트 중입니다.

SEO 관련 잠재적 문제에 대해 우려가 있습니다. 구체적으로, WordPress에서 Discourse로 동일한 콘텐츠를 게시할 경우 콘텐츠 중복으로 인한 SEO 문제가 발생할까 봐 걱정됩니다. Discourse는 SEO 목적으로 포럼 내 콘텐츠를 복사본으로 표시합니까?

Hello Victor :slight_smile:

기본 설정만으로도 SEO 측면에서는 문제없을 것입니다(도메인이 서로 다르므로). 대신 Discourse 토ピック의 canonical URL을 WordPress 게시글 URL로 설정할 수도 있습니다.

Discourse 사이트 설정에서 embed set canonical url을 활성화하면, WP 게시글의 영구 링크(permalink)가 Discourse 토ピック의 canonical URL이 됩니다(즉, Discourse 토ピック HTML의 head 부분에 canonical 링크로 표시됩니다).

이와 관련하여 더 자세한 내용은 아래를 참고하세요.

1개의 좋아요

@angus님, 감사합니다. 정말 감사드립니다. 제게는 SEO를 직접 관리하는 것이 운에 맡기는 것보다 훨씬 안전합니다!

1개의 좋아요

서로 다른 custom_post_types에 서로 다른 카테고리를 설정하려고 하고 있습니다. 아래 코드는 Wordpress 관리자 화면에서 올바른 카테고리를 선택합니다. 하지만 Discourse에 게시할 때 카테고리가 설정되지 않고(기본값인 '분류되지 않음’으로 설정됩니다)…

아마도 제가 뻔한 것을 놓치고 있는 것일까요?

// WP Discourse set CPT forum categories for CPTS
 
add_filter( 'wp_discourse_publish_categories', 'radhr_filter_categories_policies', 10, 2 );
function radhr_filter_categories( $categories, $post ) {
	if ( 'policy' === get_post_type( $post ) ) {
		$output = [];
		foreach ( $categories as $category ) {
			if ( 'Policies' === $category['name']) {
				$output[] = $category;
			}
		}
		return $output;
	} 
	
	elseif ( 'guide' === get_post_type( $post ) ) {
		$output = [];
		foreach ( $categories as $category ) {
			if ( 'Guides' === $category['name']) {
				$output[] = $category;
			}
		}
		return $output;
	}
	
	elseif ( 'post' === get_post_type( $post ) ) {
		$output = [];
		foreach ( $categories as $category ) {
			if ( 'Blogs' === $category['name']) {
				$output[] = $category;
			}
		}
		return $output;
	}

	return $categories;
}

목표를 달성하는 방법에 대해 합리적인 추정을 하셨지만, Gutenberg 편집기를 사용하여 카테고리 하나만 필터링하는 경우 wp_discourse_publish_categories는 안정적으로 작동하지 않습니다.

대신 wpdc_publish_post_category를 사용해야 합니다:

OP(원문 게시글)에 이 내용을 언급하도록 업데이트하겠습니다.

1개의 좋아요