创建预过滤图像库的URL(未成功)

时间:2017-09-13 10:37:36

标签: wordpress

我正在使用这个wordpress插件创建一个带有buttoms过滤器的图片库(基于类别) - 这里的图库:http://185.56.87.172/~canaryfi/locations-all/

图库效果很棒,当您点击按钮时,图像会自动排序。

我正在尝试为某些类别创建从其他页面到此库的链接,并且在加载页面时,只显示这些类别

示例:http://185.56.87.172/~canaryfi/locations-all/#city显示按城市过滤的相同图库或/#desert显示沙漠

我尝试修改同位素,类别名称,PHP和我花了两天时间阅读几篇博客和开发人员网页上的几篇文章,甚至我在这里阅读了所有这些文章:

isotope filter to link from another page

Apply data-filter on <a>

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

等等:(

所以我的最后一次机会是问你

你能支持我吗?非常感谢您的支持

<?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 个答案:

答案 0 :(得分:0)

由于这似乎是用JS过滤的,关于你现在做一些“hacky”的方式。

这不需要你修改插件只是为了添加一段代码来插入所需的参数。

让您的网址看起来像span.prefilter

在PHP代码中添加$_GET['prefilter']之类的容器,如果设置了$_GET,则放置data-filter(如果设置了JQuery(document).ready(function(){ var prefilter = jQuery('span.prefilter').val(); if(prefilter){ jQuery('ul.simplefilter li[data-filter=' + prefilter + ']').trigger('click'); } }); ,则放入容器。)

然后在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]; } } }; 的点击。

pd.concat([df,df1],axis=0).sort_values(['code','scale']).drop_duplicates(['code','scale'],keep='last')    
Out[21]: 
    code  scale    R1     R2
0   121      1  80.0  110.0
0   121      2  30.0   20.0
2   121      3   NaN    NaN
3   313      1  60.0   60.0
3   313      2  15.0   10.0
5   313      3   NaN    NaN

如果没有打印出容器,您可以直接从JS读取url参数。

msg = create_message('YOU@gmail.com','THEM@company.com','Re: Software Developer - Hertford','This is a test')

create_draft(service,'me',  msg)
  

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