WPML
상태
해결됨
해결된 버전
WooCommerce Multilingual & Multicurrency 5.5.2
주제 태그
WCML

문제 개요

이전에 클래식 번역 에디터(CTE)로 번역한 상품이 있는 상태에서 ATE를 사용하도록(새 번역에만 해당) WPML 설정을 업데이트한 경우, 이전에 번역된 해당 상품을 편집할 때 CTE 대신 ATE에서 잘못 열립니다.

(이는 다른 포스트 유형이 아닌 상품에만 특별히 영향을 미칩니다.)

임시 해결 방법

이 문제는 상품에 사용된 에디터의 세부 정보가 잘못 저장되기 때문에 발생합니다.

해결 방법의 한 부분은 이를 수정하여 CTE로 상품을 번역할 때 번역 에디터를 올바르게 기록하여 다음 번에 올바른 에디터에서 열리도록 하는 것입니다.

하지만 이미 CTE로 편집된 상품에 대해 잘못된 에디터를 기록한 기존 데이터도 모두 수정해야 합니다.

이 두 번째 부분을 먼저 해결하려면 다음 사용자 정의 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;
});

알려진 모든 문제 →