• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

189
Views
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í

about 3 years ago · Santiago Trujillo
1 answers
Answer question

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.

about 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error