1

I'm using this wordpress plugin to create an image gallery with buttoms filters (based on categories) - Here the gallery: http://185.56.87.172/~canaryfi/locations-all/

The gallery works awesome, when you click on a button, the images are automatically sorted.

I am trying to create links from other pages to this gallery for some categories and that when loading the page, only appear those categories

Example: http://185.56.87.172/~canaryfi/locations-all/#city to show the same gallery filtered by cities or /#desert to show deserts

I tried to modify the isotope, the category name, the PHP and I spend 2 days reading several articles in several blogs and developer webpage, even I read all those articles here:

isotope filter to link from another page

Apply data-filter on <a>

https://github.com/metafizzy/isotope/issues/688

and much more :(

so my last chance is ask you

Can you please support me? Many thanks in advance for you support

<?php
/**
 * Plugin Name: Go Gallery
 * Plugin URI:  https://wordpress.org/plugins/go-gallery/
 * Text Domain: go_gallery
 * Description: Responsive filterable gallery with media categories. Easy to use, lightweight yet powerful shortcode driven gallery plugin to display beautiful galleries without slowing down your page.
 * Version:     1.0
 * Author:      AlViMedia
 * Author URI:  http://alvimedia.com
 * License:     GPL
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

define('GO_GALLERY_VERSION', '1.0');

add_action('wp_enqueue_scripts', 'go_gallery_enqueue_scripts');

if ( is_admin() ) {
    add_filter( 'plugin_action_links_' . plugin_basename(__FILE__), 'my_plugin_action_links' );
}
function my_plugin_action_links( $links ) {
    $links[] = '<br /><br /><a target="_blank" href="http://AlViMedia.com/"><u><strong>More PlugIns by AlViMedia</strong></u></a>';
    return $links;
}

function go_gallery_enqueue_scripts() {

    wp_enqueue_script('imagesloaded', plugins_url('/assets/plugins/imagesloaded/imagesloaded.pkgd.min.js', __FILE__), array('jquery'), GO_GALLERY_VERSION, true);
    wp_enqueue_script('isotope', plugins_url('/assets/plugins/isotope/isotope.pkgd.min.js', __FILE__), array('jquery'), GO_GALLERY_VERSION, true);

    wp_enqueue_script('go-gallery', plugins_url('/assets/js/gallery.js', __FILE__), array('jquery', 'isotope', 'imagesloaded'), GO_GALLERY_VERSION, true);
    wp_enqueue_style('go-gallery', plugins_url('/assets/css/gallery.css', __FILE__), null, GO_GALLERY_VERSION);

    wp_enqueue_script('tos', plugins_url('/assets/plugins/tos/js/jquery.tosrus.min.custom.js', __FILE__), array('jquery'), GO_GALLERY_VERSION, true);
    wp_enqueue_style('tos', plugins_url('/assets/plugins/tos/css/jquery.tosrus.custom.css', __FILE__), null, GO_GALLERY_VERSION);

}

/**
 * Setup Taxonomies
 * Creates 'attachment_tag' and 'attachment_category' taxonomies.
 * Enhance via filter `ct_attachment_taxonomies`
 *
 * @uses    register_taxonomy, apply_filters
 * @since   1.0.0
 * @return  void
 */
function go_setup_taxonomies() {

    $labels = array(
        'name'              => _x('Media Categories', 'taxonomy general name', 'go_gallery'),
        'singular_name'     => _x('Media Category', 'taxonomy singular name', 'go_gallery'),
        'search_items'      => __('Search Media Categories', 'go_gallery'),
        'all_items'         => __('All Media Categories', 'go_gallery'),
        'parent_item'       => __('Parent Media Category', 'go_gallery'),
        'parent_item_colon' => __('Parent Media Category:', 'go_gallery'),
        'edit_item'         => __('Edit Media Category', 'go_gallery'),
        'update_item'       => __('Update Media Category', 'go_gallery'),
        'add_new_item'      => __('Add New Media Category', 'go_gallery'),
        'new_item_name'     => __('New Media Category Name', 'go_gallery'),
        'menu_name'         => __('Media Categories', 'go_gallery'),
    );

    $args = array(
        'hierarchical'      => TRUE,
        'labels'            => $labels,
        'show_ui'           => TRUE,
        'show_admin_column' => TRUE,
        'query_var'         => TRUE,
        'rewrite'           => TRUE,
    );

    register_taxonomy('attachment_category', 'attachment',  $args );

}

add_action('init', 'go_setup_taxonomies');


/** Add a category filter to images */
/*
function go_add_image_category_filter() {
    $screen = get_current_screen();
    if ( 'upload' == $screen->id ) {
        $dropdown_options = array( 'show_option_all' => __( 'View all categories', 'ct' ), 'taxonomy' => 'attachment_category', 'hide_empty' => false, 'hierarchical' => true, 'orderby' => 'name', );
        wp_dropdown_categories( $dropdown_options );
    }
}
add_action( 'restrict_manage_posts', 'go_add_image_category_filter' );
*/

add_shortcode('go_gallery', 'go_gallery_shortcode');

function go_gallery_bool($value){
    return ($value == 'yes' || $value == 'on' || $value == '1');
}

function go_gallery_hex2rgb($hex, $alpha = '0.4') {
    $hex = str_replace("#", "", $hex);

    if(strlen($hex) == 3) {
        $r = hexdec(substr($hex,0,1).substr($hex,0,1));
        $g = hexdec(substr($hex,1,1).substr($hex,1,1));
        $b = hexdec(substr($hex,2,1).substr($hex,2,1));
    } else {
        $r = hexdec(substr($hex,0,2));
        $g = hexdec(substr($hex,2,2));
        $b = hexdec(substr($hex,4,2));
    }
    $rgb = array($r, $g, $b);
    return 'rgba(' . join(', ', $rgb) . ', ' . $alpha .')';
}

function go_gallery_shortcode($atts, $content = null) {
    $atts = shortcode_atts(array(
        'cat'               => '',
        'menu_show'         => '1',
        'menu_pos'          => 'center',
        'lightbox'          => 'yes',
        'limit'             => 20,
        'border_size'       => 5,
        'border_color'      => '#fff',
        'overlay_color'     => '#fff',
        'menu_button'       => 'all',
        'menu_color'        => '#fff',
        'menu_bg'           => '#000',
        'menu_bg_hover'     => '#aaa',
        'menu_gap'          => 4,
        'hover_data'        => 'yes',
        'bg'                => '#eee',
        'desc_color'        => '#000',
        'gap'               => 10,
        'style'             => 'normal',
        'size'              => 'medium'
    ), $atts, 'go_gallery');

    $output = '';

    $args = array(
        'post_type'         => 'attachment',
        'post_status'       => 'inherit',
        'posts_per_page'    => $atts['limit'],
        'order'             => 'DESC',
        'orderby'           => 'modified',
        'post_mime_type'    => 'image/jpeg,image/gif,image/jpg,image/png'
    );

    $categories = array();

    $atts['cat'] = array_map('sanitize_title', explode(',', $atts['cat']));

    foreach ( $atts['cat'] as $category ) {

        if ( $term = get_term_by('slug', $category, 'attachment_category') ) {
            $categories[$term->term_id] = $term;
        }

    }

    if ( !empty($categories) ) {
        $args['tax_query'] = array(
            array(
                'taxonomy'  => 'attachment_category',
                'field'     => 'term_id',
                'terms'     => array_keys($categories)
            )
        );
    }

    $atts['menu_gap'] = min($atts['menu_gap'], 100);

    $classes[] = 'go-gallery';
    $classes[] = 'menu-' . $atts['menu_pos'];
    $classes[] = go_gallery_bool($atts['menu_show']) ? 'menu-show' : '';
    $classes[] = 'size-' . $atts['size'];
    $classes[] = 'style-' . $atts['style'];

    $attributes = array();
    $attributes['class'] = join(' ', $classes);
    $attributes['id'] = 'go-' . substr(md5(mt_rand(0, PHP_INT_MAX)), 0, 6);
    $attributes['data-gap'] = intval($atts['gap']);
    $attributes['data-border-color'] = $atts['border_color'];
    $attributes['data-lightbox'] = go_gallery_bool($atts['lightbox']) ? 'yes' : 'no';
    $attributes['data-desc-color'] = $atts['desc_color'];
    $attributes['data-menu-color'] = $atts['menu_color'];
    $attributes['data-menu-bg'] = $atts['menu_bg'];
    $attributes['data-menu-bg-hover'] = $atts['menu_bg_hover'];
    $attributes['data-menu-gap'] = $atts['menu_gap'];
    $attributes['data-bg'] = $atts['bg'];
    $attributes['data-border-size'] = $atts['border_size'];
    $attributes['data-overlay-color'] = go_gallery_hex2rgb($atts['overlay_color']);

    $thumb_size = 'medium';

    if ( $atts['size'] == 'large' || ($atts['style'] == 'squared' && in_array($atts['size'], array('medium', 'large'))) ) {
        $thumb_size = 'large';
    }

    foreach ( $attributes as $attribute => $value ) {
        $attributes[$attribute] = $attribute . '="' . $value . '"';
    }

    $query = new WP_Query($args);

    $output .= '<div ' . join(' ', $attributes) . '>';
    $output .= '<ul class="go-gallery-filters">';
    $output .= '<li>';
    $output .= '<a data-filter="" href="#">' . __($atts['menu_button'], 'go_gallery') . '</a>';
    $output .= '</li>';

    foreach ( $categories as $category ) {

        if ( !empty($category) ) {
            $output .= '<li>';
            $output .= '<a data-filter="' . $category->slug . '" href="#">' . $category->name . '</a>';
            $output .= '</li>';

        }

    }


    $output .= '</ul><br><br><br>';

    $output .= '<div class="go-gallery-list-wrapper">';
    $output .= '<ul class="go-gallery-list">';

    foreach ( $query->posts as $post ) {

        $category_terms = wp_get_post_terms($post->ID, 'attachment_category');

        $classes = array();
        $classes[] = 'go-gallery-item';

        foreach ( $category_terms as $category_term ) {
            $classes[] = 'category-' . $category_term->slug;
        }

        $image_source = wp_get_attachment_image_src($post->ID, 'full');

        $output .= '<li data-source="' . $image_source[0] . '" class="' . join(' ', $classes) . '">';

        $output .= '<a class="image-wrap" href="' . $image_source[0] . '">';
        $output .= '<figure>';

        $output .= wp_get_attachment_image($post->ID, $thumb_size);

        $output .= '<div class="image-overlay">';

        if ( go_gallery_bool( $atts['hover_data'] ) ){
            $output .= '<h3>' . $post->post_title . '</h3>';
            $output .= '<h4>' . $post->post_content . '</h4>';
        }

        $output .= '</div>';

        $output .= '</figure>';
        $output .= '</a>';
        $output .= '</li>';
    }

    $output .= '</ul>';
    $output .= '</div>';
    $output .= '</div>';

    return $output;
}

1 Answers1

0

Since that seems to be filtered with JS, about you do a little "hacky" way for the moment.

This would not require you to modify the plugin just to add a piece of code that will insert the required arguments.

Get your url to look something like "?prefilter=1"

In the PHP code add a container like span.prefilter and put the $_GET['prefilter'] if it is set (or just put the container if the $_GET is set).

Then in JS you could trigger a click of the specific data-filter.

JQuery(document).ready(function(){
  var prefilter = jQuery('span.prefilter').val();
  if(prefilter){
     jQuery('ul.simplefilter li[data-filter=' + prefilter + ']').trigger('click');
  }
});

OR

Without printing out the container you could read the url parameters straight from the JS.

var getUrlParameter = function getUrlParameter(sParam) {
    var sPageURL = decodeURIComponent(window.location.search.substring(1)),
        sURLVariables = sPageURL.split('&'),
        sParameterName,
        i;

    for (i = 0; i < sURLVariables.length; i++) {
        sParameterName = sURLVariables[i].split('=');

        if (sParameterName[0] === sParam) {
            return sParameterName[1] === undefined ? true : sParameterName[1];
        }
    }
};

Reference to : Get url parameter jquery Or How to Get Query String Values In js

Musk
  • 1,477
  • 1
  • 15
  • 25