Corrección de la URL de la imagen en ACF (Advanced Custom Fields)
El plugin ACF (Advanced Custom Fields) es una herramienta excelente y práctica para ampliar la funcionalidad de WordPress. ACF te permite añadir campos personalizados al panel de administración de tu proyecto. Al usar el campo de imagen, suelo usar la URL para obtener el valor.

En la plantilla, al generar el valor del campo de imagen, no siempre se obtiene el valor correcto. A veces, en lugar de la URL, se obtiene un ID. Esto suele suceder en un bucle cuando se generan elementos desde una matriz. Puedes solucionar este comportamiento con el siguiente código:
PHP
$logo = get_field('logo');
if (is_numeric($logo)) {
$logo_url = wp_get_attachment_url($logo);
} else {
$logo_url = $logo; // string (URL)
}
Si se utilizan campos de imagen en diferentes plantillas, tiene sentido mover esta corrección al archivo functions.php.
PHP
// functions.php
function getAcfImgUrl($img){
if (is_numeric($img)) {
return wp_get_attachment_url($img);
}
return $img;
}
En la plantilla, esto podría parecerse al que se muestra a continuación. Pero todo depende de su implementación, y usted tendrá sus propios nombres de campo.
PHP
$offers = get_field('offer_list');
foreach ($offers as $item) {
$icon = getAcfImgUrl($item['icon']);
// other code...
echo '<img src="' . $icon . '" atl="icon" />';
}
Publicaciones similares:
-
Cómo eliminar el campo "Sitio web" del formulario de comentarios de WordPress
Por defecto, WordPress incluye un campo "Sitio web" o "URL" en su formulario de comentarios. Si bien esto puede ser útil en algunos casos, suele atraer spammers que dejan...
-
Módulo de Google Maps para Joomla
StepMap es un módulo gratuito de Google Maps para Joomla. Este módulo está diseñado para Joomla 6. Sin embargo, también funciona en Joomla 5. El módulo no se ha probado e...
-
Plugin Step Options para WordPress
En cierto momento, necesité una forma de mostrar bloques de contenido idénticos en varias páginas, con la posibilidad de gestionarlos y actualizarlos fácilmente desde el ...
Leave a Reply