Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

357
Vistas
Cómo obtener los enlaces de imágenes de la galería de bloques de Gutenberg y agregarlos como atributos de datos html a un botón en wordpress

Estoy usando el bloque de galería de gutenberg dentro de una publicación y estoy tratando de crear un botón que contenga todas las identificaciones de imagen en el bloque de galería como atributos de datos html de modo que luego, cuando envíe el contenido a la página, pueda tener acceso a esas identificaciones usando javascript . Básicamente, estoy tratando de crear una función de caja de luz para un tipo de publicación personalizada.

El problema es que no puedo acceder a los datos del bloque de la 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 usando bloques de wordpress en la página de publicación, no estoy muy seguro de cómo se generaron, pero funcionan de manera inmediata.

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

"no funciona, $ids está vacío".

Ese bloque es uno de los bloques predeterminados de wordpress, también conocido como "bloques centrales". Para tener acceso a sus datos, necesitaría usar la función parse_blocks , no get_post_gallery . Es por eso que su variable está vacía.


Entonces, el flujo de trabajo general para obtener lo que está buscando sería:

  1. Verifique si su publicación tiene bloques o no, usando la función has_block . has_block Documentos
  2. Si es así, obtenga todos los bloques (incluido el bloque de la galería) usando la función parse_blocks . parse_blocks Documentos
  3. parse_blocks devolverá una matriz de todos los bloques utilizados en su publicación, así que revíselos y vea cuál se llama "core/gallery" .
  4. El bloque "core/gallery" tiene "attributes" e "ids" para cada imagen que ha agregado en el panel de administración.
  5. Una vez que obtenga los "ids" , debería poder crear su botón personalizado y enlaces de imagen usando la función wp_get_attachment_image_url . wp_get_attachment_image_url Documentos

Como POC:

ingrese la descripción de la imagen aquí

Por favor vea el siguiente código:

 if (has_block("gallery", get_the_content())) { $post_blocks = parse_blocks(get_the_content()); foreach ($post_blocks as $post_block) { if ("core/gallery" == $post_block["blockName"]) { $ids = $post_block["attrs"]["ids"]; } } }

Y este es el botón:

 <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>

Que regresará:

ingrese la descripción de la imagen aquí

Nota:

  • Utilicé la función get_the_content , suponiendo que está en el bucle según el código que proporcionó en su pregunta. Si no está en el ciclo o necesita usar el código fuera del ciclo, puede usar global $post; $post->post_content; en cambio.

Esta respuesta ha sido probada en wordpress 5.8 y funciona.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda