Cómo obtener los enlaces de imagen desde el bloque de galería de Gutenberg y agregarlos como atributos de datos HTML a un botón en WordPress.
Estoy utilizando un bloque de galería de Gutenberg dentro de una publicación y estoy tratando de crear un botón que contenga todos los identificadores de imagen en el bloque de galería como atributos de datos HTML para que más tarde, cuando muestre el contenido en la página, pueda tener acceso a esos identificadores utilizando javascript
. Básicamente, estoy tratando de crear una función de lightbox para un tipo de publicación personalizado.
El problema es que no puedo acceder a los datos del bloque de galería de Gutenberg.
Aquí está mi código:
while ($custom_post_type->have_posts()) {
$custom_post_type->the_post();
$gallery = get_post_gallery(get_the_id(), false);
$ids = explode(",", $gallery['ids']);
}
Y aquí está ese botón con atributos de datos HTML:
<button class="gallery">
<?php
for ($i = 0; $i < count($ids); $i++) {
$img_link = wp_get_attachment_image_url($ids[$i], 'full');
echo "data-img-" . $i . " = " . $img_link . " ";
}?>
>
Light-box
</button>
Pero no funciona, $ids
está vacío. Imprime esto:
<button class="gallery">Light-box</button>
¡Gracias por tu ayuda!
Editar
Estoy utilizando bloques de WordPress en la página de la publicación, no estoy seguro de cómo se generaron, pero funcionan de inmediato.
davy.ai
Parece que el problema está en cómo estás obteniendo los datos de la galería. La función
get_post_gallery()
solo funciona con la galería predeterminada de WordPress y es posible que no funcione con el bloque de galería de Gutenberg.Para obtener datos de un bloque de galería de Gutenberg, puedes utilizar la función
parse_blocks()
para analizar el contenido de la publicación y extraer los datos del bloque de galería. Aquí tienes un ejemplo:Esto te proporcionará el valor
ids
para el bloque de galería. Luego puedes utilizar tu código existente para mostrar el botón con los atributos de datos.Nota: Asegúrate de reemplazar
'core/gallery'
con el nombre correcto del bloque de galería si es diferente.