Saltar navegación

Este es el foro de soporte técnico de WPML, el plugin multilingüe de WordPress.

Todas las personas pueden leerlo pero solo los clientes de WPML pueden ingresar comentarios. El equipo de WPML responde en los foros 6 días a la semana, 22 horas por día.

Etiquetado: 

Este tema contiene 1 respuesta, tiene 2 voces.

Última actualización por Carlos Rojas hace 1 año, 2 meses.

Asistido por: Carlos Rojas.

Autor Entradas
octubre 13, 2023 en 2:20 pm #14574095

olgaG-13

Buenas tardes.
Necesito traducir una URL que utiliza una plantilla interna del plugin Give y que la ingreso en la URL a traves de un shortcode.

He leído algún hilo y lo que entiendo es que debo incluir en el archivo wpml-config.xml el siguiente código:

<wpml-config>
<shortcodes>
<shortcode>
<tag>[give_donor_dashboard]</tag>
<attributes>
<attribute>title</attribute>
<attribute encoding="allow_html_tags">title</attribute>
<attribute type="area" encoding="urlencoded_json">values</attribute>
</attributes>
</shortcode>
</shortcodes>
</wpml-config>

Leyendo también comentáis que hay que pegar otro código en el archivo functions.php de mi tema. He entendido que es este:

add_filter( 'wpml_pb_shortcode_encode', 'wpml_pb_shortcode_encode_urlencoded_json', 10, 3 );
function wpml_pb_shortcode_encode_urlencoded_json( $string, $encoding, $original_string ) {
if ( 'urlencoded_json' === $encoding ) {
$output = array();
foreach ( $original_string as $combined_key => $value ) {
$parts = explode( '_', $combined_key );
$i = array_pop( $parts );
$key = implode( '_', $parts );
$output[ $i ][ $key ] = $value;
}
$string = urlencode( json_encode( $output ) );
}
return $string;
}

add_filter( 'wpml_pb_shortcode_decode', 'wpml_pb_shortcode_decode_urlencoded_json', 10, 3 );
function wpml_pb_shortcode_decode_urlencoded_json( $string, $encoding, $original_string ) {
if ( 'urlencoded_json' === $encoding ) {
$rows = json_decode( urldecode( $original_string ), true );
$string = array();
foreach ( $rows as $i => $row ) {
foreach ( $row as $key => $value ) {
if ( in_array( $key, array( 'text', 'title', 'features', 'substring', 'btn_text', 'label', 'value', 'y_values' ) ) ) {
$string[ $key . '_' . $i ] = array( 'value' => $value, 'translate' => true );
} else {
$string[ $key . '_' . $i ] = array( 'value' => $value, 'translate' => false );
}
}
}
}
return $string;
}

Aqui indicáis que debo agregar las claves correctas que puede obtener de la matriz JSON decodificada . En este punto no se qué debo hacer.

Muchas gracias por vuestra ayuda.

Saludos.
Olga

octubre 16, 2023 en 9:32 am #14582945

Carlos Rojas
Supporter

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/Madrid (GMT+01:00)

Hola Olga,
Muchas gracias por contactarnos

1.- Puede compartir la URL del ticket que está utilizando como referencia y desde donde ha obtenido estos códigos?

2.- En el código XML que ha compartido debe sustituir esta línea:

<tag>[give_donor_dashboard]</tag>

por esta:

<tag>give_donor_dashboard</tag>

3.- Por favor actualice los plugins de WPML instalados en su sitio para evitar cualquier problema que se haya resuelto en la última versión. Para ello debe crear una copia de seguridad del sitio completo y actualizar los plugins de WPML en Plugins -> Añadir nuevo -> Pestaña 'Comercial'

Saludos,
Carlos