Übersicht über das Problem
In Visual Composer werden die Bildunterschrift und der Alt-Text von Bildern in den Elementen Single Image, Image Gallery, Image Masonry Gallery, Simple Image Slider und Feature Description nicht zur Übersetzung gesendet. Die übersetzte Seite zeigt sie in der Standardsprache an.
Problemumgehung
Nutzen Sie eine dieser Optionen:
- Fügen Sie das Bild anstelle des Elements Single Image zusammen mit seiner Bildunterschrift und seinem Alt-Text zu einem Text Block-Element hinzu. Der Inhalt des Text-Blocks wird zur Übersetzung gesendet, einschließlich Bildunterschrift und Alt-Text.
- Oder fügen Sie diesen Code zur Datei functions.php Ihres Themes hinzu und senden Sie die Seite dann erneut zur Übersetzung. Dadurch werden die Bildunterschrift und der Alt-Text der Bilder in Visual Composer-Elementen zur Übersetzung gesendet. Wir haben dies mit dem Element Single Image getestet:
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 );