Mostrar cualquier texto condicionalmente en WordPress utilizando los campos de relación y texto en ACF

En WordPress, una de las ventajas de utilizar el plugin Advanced Custom Fields (ACF) es la capacidad de personalizar y estructurar los datos de tus páginas de manera más avanzada. En este artículo, aprenderemos a utilizar dos tipos de campos de ACF, el campo de relación con páginas y el campo de texto, para mostrar en éste caso unos textos legales de forma condicional en páginas de un sitio web.

Configuración de los campos de ACF: Primero, necesitaremos configurar dos campos de ACF en nuestro panel de administración de WordPress. El primer campo será un campo de relación con páginas, que nos permitirá seleccionar las páginas a las que queremos asociar los textos legales. El segundo campo será un campo de texto donde ingresaremos los textos legales que queremos mostrar.

¿Dónde estructuramos el contenido?: Añadimos una página de opciones con ACF, actualmente la versión PRO del plugin te permite crearla de una forma muy sencilla. A ésta página le vamos a asignar el grupo de campos que hemos creado.

Recuperación de los datos de los campos de ACF: En nuestro código, utilizaremos la función get_sub_field() de ACF para obtener los valores de los campos que hemos configurado dentro de un grupo de campos. Usaremos get_sub_field('campo_de_relacion') para obtener las páginas relacionadas y get_sub_field('campo_de_texto') para obtener el contenido de los textos legales.

Comparación de la página actual con las páginas relacionadas: Una vez que tenemos los valores de los campos, necesitamos comparar la página actual con las páginas relacionadas. Para ello, recorreremos el array de páginas relacionadas y utilizaremos la función is_page() de WordPress para verificar si alguna de las páginas relacionadas coincide con la página actual.

Mostrar los textos legales condicionalmente: Si encontramos una coincidencia entre la página actual y las páginas relacionadas, mostraremos los textos legales utilizando la función the_sub_field('campo_de_texto') para obtener el contenido del campo de texto dentro del bucle while correspondiente.

Implementación del código: Para utilizar este proceso en tu sitio web, deberás agregar el código proporcionado en el archivo functions.php de tu tema de WordPress o en un plugin personalizado. Además, asegúrate de reemplazar los nombres de los campos y ajustar la lógica según tus necesidades específicas.

Utilizar campos de relación y texto en ACF en WordPress es una forma efectiva de mostrar contenido condicional en tu sitio web. Si sigues los pasos descritos en este artículo, puedes personalizar y estructurar tus datos de manera más avanzada, mejorando la experiencia del usuario y facilitando la gestión de contenido en tu sitio.

<?php
 function añadir_textos_legales_footer() {
    if ( have_rows( 'grupo_de_textos_legales', 'option' ) ) :
        while ( have_rows( 'grupo_de_textos_legales', 'option' ) ) : the_row();
            $relacion = get_sub_field( 'paginas_con_textos_legales' );

            // Comprobar si el campo de relación tiene valores
            if ( $relacion ) {
                // Verificar si alguna de las páginas relacionadas coincide con la página actual
                $mostrar_textos = false;
                foreach ( $relacion as $pagina ) {
                    if ( is_page( $pagina->ID ) ) {
                        $mostrar_textos = true;
                        break;
                    }
                }

                // Mostrar los textos legales si se cumple la condición
                if ( $mostrar_textos ) { ?>
                    <div>
                        <?php the_sub_field( 'textos_legales_memoria_anual' ); ?>
                    </div>
                <?php }
            }
        endwhile;
    endif;
}

add_shortcode( 'textos-legales', 'añadir_textos_legales_footer' );

?>

Enlaces de interés:
https://www.advancedcustomfields.com/resources/relationship/

Sobre el autor

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *