- ステータス
- 解決済み
- 解決されたバージョン
- WooCommerce Multilingual & Multicurrency 5.5.2
- トピックタグ
- WCML
問題の概要
以前にクラシック翻訳エディタ(CTE)で翻訳した商品があり、その後WPMLの設定を更新して(新規翻訳のみに)ATEを使用するようにした場合、以前に翻訳したその商品を編集すると、CTEではなく誤ってATEで開かれます。
(これは他の投稿タイプではなく、特に商品に影響します。)
回避策
この問題は、どのエディタが使用されたかの詳細が商品に対して誤って保存されるために発生します。
解決策の一部はこれを修正し、CTEを使用して商品を翻訳する際に翻訳エディタが正しく記録され、次回正しいエディタで開くようにすることです。
しかし、すでにCTEで編集された商品に対して誤ったエディタを記録している、すべての既存データも修正する必要があります。
まずこの2番目の部分から対処します。これには次のカスタムSQLクエリを実行する必要があります。
UPDATE wp_icl_translate_job AS job
JOIN (
SELECT job.job_id
FROM wp_icl_translate_job AS job
LEFT JOIN wp_icl_translation_status AS status ON job.rid = status.rid
LEFT JOIN wp_icl_translations AS translations ON status.translation_id = translations.translation_id
WHERE translations.element_type = 'post_product'
) AS derived
ON job.job_id = derived.job_id
SET job.editor = 'wpml'
WHERE job.editor = 'wp';
データベースのテーブルで`wp_`以外のプレフィックスを使用している場合は、調整が必要です(上記には`wp_icl_`の記述が4箇所あります)。
このようなクエリは、phpMyAdminを使用するか、Adminerプラグイン経由で実行できます。
次に、今後エディタの詳細が正しく保存されるようにするため、(コードスニペットプラグインを使用するか、テーマのfunctions.phpファイルに)以下を追加する必要があります。
/**
* WPMLSUPP-12927: Temporary fix to correctly record CTE editor for products
*/
add_filter( 'wpml_translation_editor_save_job_data', function( $data ){
if ( $data['job_post_type'] == "post_product" ) {
add_action( 'wpml_save_job_fields_from_post', function( $job_id ){
wpml_tm_load_old_jobs_editor()->set( $job_id, 'wpml' );
});
}
return $data;
});