es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

WordPress: Obtener el valor del campo personalizado en el idioma correcto (WPML)

Creé un campo personalizado (usando el plugin ACF) llamado “mi campo personalizado”. Luego uso este código para obtener el valor de ese campo personalizado, que funciona bien:

echo $output = get_post_meta($data['post_id'], "my_custom_field", true);

Mi sitio web tiene dos idiomas (francés y español). Utilizo WPML para las traducciones.

El problema es que el $output siempre muestra el valor para el idioma predeterminado (francés), incluso si se carga e imprime en una página “español”.

Supongo que necesito agregar algo más en mi código para detectar el idioma y mostrar el $output de acuerdo con ello.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para resolver el problema de que el campo personalizado siempre muestra el idioma predeterminado (francés) en la página en español, puedes modificar el código para incluir la función del selector de idioma de WPML. El código actualizado debería verse así:

    $current_lang = apply_filters( 'wpml_current_language', NULL );
    $output = get_field( 'my_custom_field' );
    if ( $current_lang == 'es' ) { //reemplaza 'es' con el código de idioma para español
       $output = apply_filters( 'wpml_translate_single_string', $output, 'ACF', 'my_custom_field', $current_lang );
    }
    echo $output;
    

    Explicación:
    – La función apply_filters( 'wpml_current_language', NULL ) obtiene el código del idioma actual.
    – La función get_field( 'my_custom_field' ) recupera el valor del campo personalizado.
    – La declaración if verifica si el idioma actual es español.
    – Si el idioma actual es español, la función apply_filters( 'wpml_translate_single_string', $output, 'ACF', 'my_custom_field', $current_lang ) traduce el valor del campo personalizado al español.
    – Finalmente, el código imprime el valor del campo personalizado.

Comments are closed.