WP-Gallery - masonry layout

Incerc sa modific o tema astfel incat sa adaug masonry ca optiune de layout. In back-end (post editor pentru post-format-ul gallery) am adaugat un check-box. Ulterior verific daca e true iar daca e, aplic clasele folosite de masonry (container si item).

In post editor shortcode-ul folosit e cel standard, adica [gallery link="file" ids="1746,1745,1744"].

In post-gallery.php am urmatorul cod care urmeaza logica:

  • daca in postul curent exista o gallerie, luam toate imaginile si verificam ce layout folosim;
  • daca optiunea de slider e true folosim acel layout;
  • altfel, verificam cate coloane a selectat userul pentru galerie si afisam imaginile la dimensiunile prestabilite (fiecare numar de coloane are un image_size diferit).

Pentru adaugarea unui nou layout masonry, am incercat sa modific ultima parte a codului, adica cea de mai jos:

foreach ( $gallery['src'] as $image ) {
    $masonry_sizes = array('thumbnail', 'medium', 'large', 'full');
    $index = array_rand($masonry_sizes);
    $image = wp_get_attachment_image_src($id, $masonry_sizes[$index]);
    $alt = get_the_title();
    $gallery_masonry = get_post_meta($post->ID, 'zephyr_meta_box_gallery_masonry', true);
     ?>
        <div>
            <a class="fancybox" rel="gallery-<?php echo $post->ID; ?>" href="<?php echo $image[0]; ?>"><img class="<?php if ($gallery_masonry == true) { echo 'masonry-image'; } ?>" src="<?php echo $image[1]; ?>" alt="<?php echo $alt; ?>"></a>
        </div>
     <?php
}

Pentru ca masonry sa functioneze corect trebuie sa aplic un image_size diferit imaginilor din galerie. Asta am facut cu $masonry_sizes dupa care am incercat sa selectez din array cu $image. Nu merge si nu inteleg de ce.

Ce nu functioneaza mai exact?

($gallery['src'] as $image)

apoi rescrii variabila:

$image = wp_get_attachment_image_src($id, $masonry_sizes[$index])

1 Like

Pana la urma am rezolvat - problema era ca nu afisa nicio imagine. Pe langa variabila rescrisa nici nu intercalasem unde trebuie cazul meu in flow-ul if / else. Daca intereseaza pe cineva, tot codul e pe pastebin.

2 Likes