نظرة عامة على المشكلة
في Visual Composer، لا تُرسل التسمية التوضيحية والنص البديل للصور في عناصر Single Image و Image Gallery و Image Masonry Gallery و Simple Image Slider و Feature Description إلى الترجمة. تعرضها الصفحة المترجمة باللغة الافتراضية.
حل بديل مؤقت
استخدم أحد هذه الخيارات:
- بدلاً من عنصر Single Image، أضف الصورة إلى عنصر Text Block، مع تسميتها التوضيحية ونصها البديل. يتم إرسال محتوى Text Block إلى الترجمة، بما في ذلك التسمية التوضيحية والنص البديل.
- أو أضف هذا الكود إلى ملف functions.php في قالبك، ثم أرسل الصفحة إلى الترجمة مرة أخرى. فهو يرسل التسمية التوضيحية والنص البديل للصور في عناصر Visual Composer إلى الترجمة. اختبرناه مع عنصر Single Image:
add_filter( 'wpml_tm_translation_job_data', function ( $package ) {
if ( empty( $package['contents']['field-vcv-pageContent-0']['data'] ) ) {
return $package;
}
$page = json_decode( rawurldecode( base64_decode( $package['contents']['field-vcv-pageContent-0']['data'] ) ), true );
foreach ( (array) ( $page['elements'] ?? [] ) as $element_id => $element ) {
foreach ( (array) $element as $attribute => $items ) {
if ( ! is_array( $items ) ) {
continue;
}
foreach ( $items as $index => $item ) {
foreach ( [ 'caption', 'alt' ] as $key ) {
if ( ! is_array( $item ) || empty( $item[ $key ] ) || ! is_string( $item[ $key ] ) ) {
continue;
}
$field = 'vcv-pageContentField--' . $element_id . '.' . $attribute . '.' . $index . '.' . $key;
$package['contents'][ 'field-' . $field . '-0' ] = [ 'translate' => 1, 'data' => base64_encode( $item[ $key ] ), 'format' => 'base64' ];
$package['contents'][ 'field-' . $field . '-0-name' ] = [ 'translate' => 0, 'data' => $field ];
$package['contents'][ 'field-' . $field . '-0-type' ] = [ 'translate' => 0, 'data' => 'custom_field' ];
}
}
}
}
return $package;
}, 10 );