WordPress WPMLで文発行時、他の言語に自動的に記事をコピーする

WordPressから WPMLプラグインを使用すると、英語、中国語、日本語など多言語サイトを運営することができます。 WordPressを追加インストールすることなく、複数の言語で運営する場合に役立つことができます。

WPMLでは、すべてのコンテンツを一括して他の言語で複製することができます。

WordPress 多言語プラグインWPMLで大量に文/ページを複製する

そして文を発行したときに、他の言語で文を複製することも可能です。 WPMLを使用した WordPress サイトで記事を公開したときに、他の言語(例えば、英語、中国語、日本語など)も書き込みがコピーされ、公開されるようにするには、次のコードを使用している WordPress テーマの関数ファイル(functions.php)に追加するようにします。

// 글 발행 시 다른 언어로 자동으로 글 복제하기
// WPML - Auto duplicate of posts on publishing
add_action( 'wp_insert_post', 'my_duplicate_on_publishh' );
function my_duplicate_on_publishh( $post_id ) {

$post = get_post( $post_id );

// don't save for autosave
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return $post_id;
}
// dont save for revisions
if ( isset( $post->post_type ) && $post->post_type == 'revision' ) {
return $post_id;
}

// we need this to avoid recursion see add_action at the end
remove_action( 'wp_insert_post', 'my_duplicate_on_publishh' );

// make duplicates if the post being saved
// #1. itself is not a duplicate of another or
// #2. does not already have translations

$is_translated = apply_filters( 'wpml_element_has_translations', '', $post_id, $post->post_type );

if ( !$is_translated ) {
do_action( 'wpml_admin_make_post_duplicates', $post_id );
}

// must hook again - see remove_action further up
add_action( 'wp_insert_post', 'my_duplicate_on_publishh' );
}

上記のコードをなるべく チャイルドテーマ 内の関数ファイルに追加してください。 そうでなければテーマが更新されるとき、変更が失われます。

特定のカスタムポストタイプ文だけ複製する条件を追加することになります。

if ( 'portfolio' == get_post_type( $post ) ) {
$post = get_post( $post_id );
....
}

上記のコードをテストしてみるとうまく動作しますね。 図のように韓国語で文を作成して公開すると、英語、日本語など他の言語でも文章が複製され、公開されます。

WPMLの自動文章をコピーする

この方法を使用すると、他の言語でいちいち文章を複製することなく、すぐに文章がコピーされます。 これにより、各言語ごとに翻訳することができます。

参考に自動的に翻訳されるようにするには、 GTranslateを利用みることができます。 しかし、翻訳の品質がそれほど満足できない場合があります。

GTranslate有料プランを利用して、 WordPress サイトを多言語に自動翻訳する

メモ:

WPMLプラグインでの多言語 WordPress サイトを作成する(基本的な設定)


コメントを残す

*メールアドレスは公開されません。