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';
// Use the WPDiscourse plugin to generate a new category
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' ) ) {
// Enable publishing in Discourse, during initial save only.
update_post_meta( $object_id, 'publish_to_discourse', true );
$discourse_publish_option = get_option( 'discourse_publish' );
// set the Discourse category based on WP category
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 );
}
}
}
ゲイリーさん、回答ありがとうございます!
残念ながら、以下の行で「構文エラー、予期しない ‘->’ (T_OBJECT_OPERATOR)」というエラーが発生しています。
new \\WPDiscourse\\Utilities\\PublicPluginUtilities()-\u003ediscourse_request(
PHPのバージョンは7.4で、動作するはずです。エラーが発生する理由がわかりません。
テストされていないと言いましたよね?
今すぐデバッグのヘルプをあまり提供できませんが、その問題を修正し、2番目のアクションの冗長なチェックを削除するはずの更新バージョンを次に示します。
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';
// Use the WPDiscourse plugin to generate a new category
$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' ) ) {
// Enable publishing in Discourse, during initial save only.
update_post_meta( $object_id, 'publish_to_discourse', true );
$discourse_publish_option = get_option( 'discourse_publish' );
// set the Discourse category based on WP category
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ヶ月ほどなので、まだの場合はホスティング環境のアップグレード計画を立て始めるべきです ![]()
ええ、そうですね
でも、コーディングがあまり得意ではないので、あらゆる場所で解決策を探しています。まだフリーランサーは見つかっていないので、自分で解決するか、あなたのアドバイスでうまくいくことを願っています ![]()
改めて、ありがとうございます。確認します!