WPML
סטטוס
נפתר
נפתר בגרסה
WooCommerce Multilingual & Multicurrency 5.5.2
תגיות נושא
WCML

סקירה כללית של התקלה

אם יש לך מוצרים שתורגמו בעבר באמצעות עורך תרגום קלאסי (CTE) ולאחר מכן עדכנת את הגדרות WPML שלך כדי להשתמש ב־ATE (עבור תרגומים חדשים בלבד), עריכת מוצרים אלה שתורגמו בעבר תפתח אותם בטעות ב־ATE במקום ב־CTE.

(זה משפיע באופן ספציפי על מוצרים ולא על סוגי פוסטים אחרים.)

פתרון עוקף

הבעיה מתעוררת מכיוון שהפרטים לגבי העורך שבו נעשה שימוש נשמרים באופן שגוי עבור מוצרים.

חלק מהפתרון הוא לתקן זאת, כך שבעת תרגום מוצרים דרך 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_` לעיל).

באפשרותך להריץ שאילתה כזו באמצעות 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;
});

כל התקלות הידועות →