I have a very simple wordpress problem, but I'm still struggling to figure out the solution. I have an anchor tag, and I want it to open an image gallery in a lightbox (as the default behavior when user clicks on one of the images from the image gallery) on click.
The image gallery should be hidden otherwise, visible only when the user clicks "show gallery" link.
Here's the code:
[gallery link="file" ids="163337,163336,163335,163334"]
<a href="#">View gallery</a>
Can someone help me please? How do I bind the two elements together? Is there any easy way like setting the class to the anchor tag and selector name to gallery tag (as X theme makes it easily done) or do I have to write the lightbox code from scratch? It would be highly appreciated.
I have a very simple wordpress problem, but I'm still struggling to figure out the solution. I have an anchor tag, and I want it to open an image gallery in a lightbox (as the default behavior when user clicks on one of the images from the image gallery) on click.
The image gallery should be hidden otherwise, visible only when the user clicks "show gallery" link.
Here's the code:
[gallery link="file" ids="163337,163336,163335,163334"]
<a href="#">View gallery</a>
Can someone help me please? How do I bind the two elements together? Is there any easy way like setting the class to the anchor tag and selector name to gallery tag (as X theme makes it easily done) or do I have to write the lightbox code from scratch? It would be highly appreciated.
As I understand it, you want to show a div
element containing the gallery when Show Gallery is pressed - otherwise to hidden.
This can be accomplised with a couple of jQuery lines:
$( ".show" ).click(function() {
$( ".gallery" ).addClass( "display" );
});
With the appropriate CSS. See jsfiddle Be sure to remember to include jquery in your theme if it doesn't contain it otherwise.
Following could do it:
<?php
add_filter('do_shortcode_tag', 'wpse_247589_toggle_gallery_visibility', 10, 2 );
function wpse_247589_toggle_gallery_visibility( $output, $tag ){
if( 'gallery' === $tag ){
$id = substr(uniqid(), 0, 12);
ob_start();
?>
<a href="#" class="toggle-gallery-visibility" data-instance-id="gallery-<?php echo $id; ?>">View gallery</a>
<script type="text/javascript">
jQuery(function(){
jQuery('a[data-instance-id="gallery-<?php echo $id; ?>"]').click(function(){
jQuery(this).parent().find('.gallery').toggle();
});
});
</script>
<?php
$output .= ob_get_clean();
}
return $output;
}
Explanation: