'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'post__in', 'order' => 'ASC', 'include' => $image_ids ); $attachments = get_posts($args); foreach ($attachments as $attachment) { $image_url = wp_get_attachment_image_url($attachment->ID, 'thumbnail'); $image = ''; $image = '
'. $image .'
'; $html .= '
' . $image . '
'; } } wp_send_json(array('status' => true, 'html' => $html)); } /** * Render the shortcode * * @param array $args Shortcode parameters. * @param string $content Content between shortcode. * * @return string */ public function render($args, $content = '') { $attrs = FusionBuilder::set_shortcode_defaults(self::get_element_defaults(), $args, 'wpmf_fusion_gallery'); $attrs = apply_filters('fusion_builder_default_args', $attrs, 'wpmf_fusion_gallery', $args); foreach ($attrs as $k => $v) { ${$k} = $v; } $items = trim($items, ','); if (empty($items) && ($gallery_folders === 'no' || ($gallery_folders === 'yes' && empty($gallery_folder_id)))) { $html = '
'; } else { if ($enable_shadow) { $img_shadow = $shadow_horizontal . 'px ' . $shadow_vertical . 'px ' . $shadow_blur . 'px ' . $shadow_spread . 'px ' . $shadow_color; } else { $img_shadow = ''; } $gallery_folders = (isset($attrs['gallery_folders']) && $attrs['gallery_folders'] === 'yes') ? 1 : 0; // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- No action, nonce is not required $is_builder = (function_exists('fusion_is_preview_frame') && fusion_is_preview_frame()) || (function_exists('fusion_is_builder_frame') && fusion_is_builder_frame()); $style = ''; switch ($theme) { case 'default': case 'masonry': case 'portfolio': if ($img_shadow !== '') { $style .= '#gallery-' . $this->gallery_counter . ' .wpmf-gallery-item img:hover {box-shadow: ' . $img_shadow . ' !important; transition: all 200ms ease;}'; } if ($border_style !== 'none') { $style .= '#gallery-' . $this->gallery_counter . ' .wpmf-gallery-item img {border: ' . $border_color . ' ' . $border_width . 'px ' . $border_style . '}'; } break; case 'slider': if ($img_shadow !== '') { if ((int)$columns > 1) { $style .= '#gallery-' . $this->gallery_counter . ' .wpmf-gallery-item:hover {box-shadow: ' . $img_shadow . ' !important; transition: all 200ms ease;}'; } } if ($border_style !== 'none') { if ((int)$columns === 1) { $style .= '#gallery-' . $this->gallery_counter . ' .wpmf-gallery-item img {border: ' . $border_color . ' ' . $border_width . 'px ' . $border_style . ';}'; } else { $style .= '#gallery-' . $this->gallery_counter . ' .wpmf-gallery-item {border: ' . $border_color . ' ' . $border_width . 'px ' . $border_style . ';}'; } } break; } if ('' !== $style) { $style = ''; } if ($is_builder) { $html = do_shortcode('[wpmf_gallery include="' . esc_attr($items) . '" display="' . esc_attr($theme) . '" columns="' . esc_attr($columns) . '" size="' . esc_attr($size) . '" targetsize="' . esc_attr($targetsize) . '" link="none" wpmf_orderby="' . esc_attr($orderby) . '" wpmf_order="' . esc_attr($order) . '" gutterwidth="' . esc_attr($gutterwidth) . '" img_border_radius="' . esc_attr($border_radius) . '" border_width="' . esc_attr($border_width) . '" border_style="' . esc_attr($border_style) . '" border_color="' . esc_attr($border_color) . '" img_shadow="' . esc_attr($img_shadow) . '" wpmf_autoinsert="' . esc_attr($gallery_folders) . '" wpmf_folder_id="' . esc_attr($gallery_folder_id) . '" crop_image="'. esc_attr($crop_image) .'" aspect_ratio="' . esc_attr($aspect_ratio) . '"]'); } else { $html = do_shortcode('[wpmf_gallery include="' . esc_attr($items) . '" display="' . esc_attr($theme) . '" columns="' . esc_attr($columns) . '" size="' . esc_attr($size) . '" targetsize="' . esc_attr($targetsize) . '" link="' . esc_attr($link) . '" wpmf_orderby="' . esc_attr($orderby) . '" wpmf_order="' . esc_attr($order) . '" gutterwidth="' . esc_attr($gutterwidth) . '" img_border_radius="' . esc_attr($border_radius) . '" border_width="' . esc_attr($border_width) . '" border_style="' . esc_attr($border_style) . '" border_color="' . esc_attr($border_color) . '" img_shadow="' . esc_attr($img_shadow) . '" wpmf_autoinsert="' . esc_attr($gallery_folders) . '" wpmf_folder_id="' . esc_attr($gallery_folder_id) . '" crop_image="'. esc_attr($crop_image) .'" aspect_ratio="' . esc_attr($aspect_ratio) . '"]'); } $html = $style . $html; $this->gallery_counter++; } return apply_filters('wpmf_fusion_gallery_element_content', $html, $args); } /** * Gets the default values. * * @return array */ public static function get_element_defaults() // phpcs:ignore PSR1.Methods.CamelCapsMethodName.NotCamelCaps -- Method extends from Fusion_Element class { $settings = wpmfGetOption('gallery_settings'); $masonry_settings = $settings['theme']['masonry_theme']; $defaults = array( 'theme' => 'masonry', 'items' => '', 'aspect_ratio' => 'default', 'columns' => (isset($masonry_settings['columns'])) ? (int)$masonry_settings['columns'] : 3, 'gutterwidth' => (isset($masonry_settings['gutterwidth'])) ? (int)$masonry_settings['gutterwidth'] : 5, 'size' => (isset($masonry_settings['size'])) ? $masonry_settings['size'] : 'medium', 'link' => (isset($masonry_settings['link'])) ? $masonry_settings['link'] : 'file', 'targetsize' => (isset($masonry_settings['targetsize'])) ? $masonry_settings['targetsize'] : 'large', 'orderby' => (isset($masonry_settings['orderby'])) ? $masonry_settings['orderby'] : 'post__in', 'order' => (isset($masonry_settings['order'])) ? $masonry_settings['order'] : 'ASC', 'border_radius' => 0, 'border_width' => 0, 'border_style' => 'solid', 'border_color' => '#cccccc', 'enable_shadow' => 'no', 'crop_image' => 'yes', 'shadow_horizontal' => 0, 'shadow_vertical' => 0, 'shadow_blur' => 0, 'shadow_spread' => 0, 'shadow_color' => '#cccccc', 'gallery_folders' => 'no', 'gallery_folder_id' => '0', ); return $defaults; } } } new WpmfAvadaGalleryClass(); } /** * Map shortcode to Avada Builder. * * @return void */ function wpmfFusionElementGallery() { if (!function_exists('fusion_builder_frontend_data')) { return; } $settings = wpmfGetOption('gallery_settings'); $defaults = $settings['theme']['masonry_theme']; $main_class = wpmfGetMainClass(); $getFolders = $main_class->getAttachmentTerms('builder'); $folders = $getFolders['attachment_terms']; $folders_order = $getFolders['attachment_terms_order']; $list_cloud = array(); $list_local = array(); foreach ($folders_order as $folder_order) { $folder = $folders[$folder_order]; if ($folder['id'] !== 0) { if (!isset($folder['depth'])) { $folder['depth'] = 0; } if (isset($folder['drive_type']) && $folder['drive_type'] !== '') { $list_cloud[$folder['id']] = str_repeat('--', $folder['depth']) . $folder['label']; } else { $list_local[$folder['id']] = str_repeat('--', $folder['depth']) . $folder['label']; } } else { $list_local[0] = $folder['label']; } } fusion_builder_map( fusion_builder_frontend_data( 'WpmfAvadaGalleryClass', array( 'name' => esc_attr__('WPMF Gallery', 'wpmf'), 'shortcode' => 'wpmf_fusion_gallery', 'icon' => 'wpmf-avada-icon wpmf-avada-gallery-icon', 'allow_generator' => true, 'preview' => WP_MEDIA_FOLDER_PLUGIN_DIR . 'class/avada-widgets/templates/gallery.php', 'preview_id' => 'fusion-builder-wpmf-gallery-preview-template', 'custom_settings_view_js' => WPMF_PLUGIN_URL . 'assets/js/avada/avada_gallery_script.js', 'front_end_custom_settings_view_js' => WPMF_PLUGIN_URL . 'assets/js/avada/avada_gallery_script.js', 'sortable' => false, 'params' => array( array( 'type' => 'radio_button_set', 'heading' => esc_html__('Theme', 'wpmf'), 'description' => esc_html__('Select the gallery layout type.', 'wpmf'), 'param_name' => 'theme', 'value' => array( 'default' => esc_html__('Default', 'wpmf'), 'masonry' => esc_html__('Masonry', 'wpmf'), 'portfolio' => esc_html__('Portfolio', 'wpmf'), 'slider' => esc_html__('Slider', 'wpmf') ), 'default' => 'masonry' ), array( 'type' => 'wpmf_gallery_select', 'heading' => esc_html__('Select images', 'wpmf'), 'description' => esc_html__('This option allows you to select multiple images at once. It saves time instead of adding one image at a time. Use Ctrl or Shift key to select multiple images.', 'wpmf'), 'param_name' => 'wpmf_gallery_select', 'group' => esc_html__('Images', 'wpmf'), ), array( 'type' => 'textfield', 'heading' => esc_html__('Images', 'wpmf'), 'param_name' => 'items', 'value' => '', 'group' => esc_html__('Images', 'wpmf') ), array( 'type' => 'select', 'heading' => esc_attr__('Aspect ratio', 'wpmf'), 'description' => __('Aspect ratio for default, slider, portfolio theme', 'wpmf'), 'param_name' => 'aspect_ratio', 'value' => array( 'default' => esc_html__('Default', 'wpmf'), '1_1' => '1:1', '3_2' => '3:2', '2_3' => '2:3', '4_3' => '4:3', '3_4' => '3:4', '16_9' => '16:9', '9_16' => '9:16', '21_9' => '21:9', '9_21' => '9:21' ), 'default' => 'default' ), array( 'type' => 'range', 'heading' => esc_attr__('Columns', 'wpmf'), 'param_name' => 'columns', 'value' => $defaults['columns'], 'min' => '1', 'max' => '8', 'step' => '1' ), array( 'type' => 'select', 'heading' => esc_attr__('Image Size', 'wpmf'), 'param_name' => 'size', 'value' => apply_filters('image_size_names_choose', array( 'thumbnail' => __('Thumbnail', 'wpmf'), 'medium' => __('Medium', 'wpmf'), 'large' => __('Large', 'wpmf'), 'full' => __('Full Size', 'wpmf'), )), 'default' => $defaults['size'] ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__('Crop Image', 'wpmf'), 'description' => esc_attr__('Only apply for slider theme', 'wpmf'), 'param_name' => 'crop_image', 'value' => array( 'yes' => esc_attr__('Yes', 'wpmf'), 'no' => esc_attr__('No', 'wpmf'), ), 'default' => 'yes', ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__('Action On Click', 'wpmf'), 'param_name' => 'link', 'value' => array( 'file' => esc_html__('Lightbox', 'wpmf'), 'post' => esc_html__('Attachment Page', 'wpmf'), 'none' => esc_html__('None', 'wpmf'), ), 'default' => $defaults['link'], ), array( 'type' => 'select', 'heading' => esc_attr__('Lightbox Size', 'wpmf'), 'param_name' => 'targetsize', 'value' => apply_filters('image_size_names_choose', array( 'thumbnail' => __('Thumbnail', 'wpmf'), 'medium' => __('Medium', 'wpmf'), 'large' => __('Large', 'wpmf'), 'full' => __('Full Size', 'wpmf'), )), 'default' => $defaults['targetsize'], 'dependency' => array( array( 'element' => 'link', 'value' => 'file', 'operator' => '==', ), ), ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__('Order by', 'wpmf'), 'param_name' => 'orderby', 'value' => array( 'post__in' => esc_html__('Custom', 'wpmf'), 'rand' => esc_html__('Random', 'wpmf'), 'title' => esc_html__('Title', 'wpmf'), 'date' => esc_html__('Date', 'wpmf') ), 'default' => $defaults['orderby'] ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__('Order', 'wpmf'), 'param_name' => 'order', 'value' => array( 'ASC' => esc_html__('Ascending', 'wpmf'), 'DESC' => esc_html__('Descending', 'wpmf') ), 'default' => $defaults['order'] ), array( 'type' => 'range', 'heading' => esc_attr__('Gutter', 'wpmf'), 'param_name' => 'gutterwidth', 'value' => '5', 'min' => '0', 'max' => '100', 'step' => '5' ), array( 'type' => 'range', 'heading' => esc_attr__('Border Radius', 'wpmf'), 'param_name' => 'border_radius', 'value' => '0', 'min' => '0', 'max' => '20', 'step' => '1' ), array( 'type' => 'range', 'heading' => esc_attr__('Border Width', 'wpmf'), 'param_name' => 'border_width', 'value' => '0', 'min' => '0', 'max' => '30', 'step' => '1' ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__('Border Type', 'wpmf'), 'param_name' => 'border_style', 'value' => array( 'solid' => esc_html__('Solid', 'wpmf'), 'double' => esc_html__('Double', 'wpmf'), 'dotted' => esc_html__('Dotted', 'wpmf'), 'dashed' => esc_html__('Dashed', 'wpmf'), 'groove' => esc_html__('Groove', 'wpmf') ), 'default' => 'solid', 'dependency' => array( array( 'element' => 'border_width', 'value' => '0', 'operator' => '!=', ), ), ), array( 'type' => 'colorpickeralpha', 'heading' => esc_attr__('Border Color', 'wpmf'), 'param_name' => 'border_color', 'value' => '', 'default' => '#cccccc', 'dependency' => array( array( 'element' => 'border_width', 'value' => '0', 'operator' => '!=', ), ), ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__('Enable Shadow', 'wpmf'), 'param_name' => 'enable_shadow', 'value' => array( 'yes' => esc_attr__('Yes', 'wpmf'), 'no' => esc_attr__('No', 'wpmf'), ), 'default' => 'no', ), array( 'type' => 'colorpickeralpha', 'heading' => esc_attr__('Shadow Color', 'wpmf'), 'param_name' => 'shadow_color', 'value' => '', 'default' => '#cccccc', 'dependency' => array( array( 'element' => 'enable_shadow', 'value' => 'yes', 'operator' => '==', ), ), ), array( 'type' => 'range', 'heading' => esc_attr__('Shadow Horizontal', 'wpmf'), 'param_name' => 'shadow_horizontal', 'value' => '0', 'min' => '-50', 'max' => '50', 'step' => '1', 'dependency' => array( array( 'element' => 'enable_shadow', 'value' => 'yes', 'operator' => '==', ), ), ), array( 'type' => 'range', 'heading' => esc_attr__('Shadow Vertical', 'wpmf'), 'param_name' => 'shadow_vertical', 'value' => '0', 'min' => '-50', 'max' => '50', 'step' => '1', 'dependency' => array( array( 'element' => 'enable_shadow', 'value' => 'yes', 'operator' => '==', ), ), ), array( 'type' => 'range', 'heading' => esc_attr__('Shadow Blur', 'wpmf'), 'param_name' => 'shadow_blur', 'value' => '0', 'min' => '0', 'max' => '50', 'step' => '1', 'dependency' => array( array( 'element' => 'enable_shadow', 'value' => 'yes', 'operator' => '==', ), ), ), array( 'type' => 'range', 'heading' => esc_attr__('Shadow Spread', 'wpmf'), 'param_name' => 'shadow_spread', 'value' => '0', 'min' => '0', 'max' => '50', 'step' => '1', 'dependency' => array( array( 'element' => 'enable_shadow', 'value' => 'yes', 'operator' => '==', ), ), ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__('Gallery From Folder', 'wpmf'), 'param_name' => 'gallery_folders', 'value' => array( 'yes' => esc_attr__('Yes', 'wpmf'), 'no' => esc_attr__('No', 'wpmf'), ), 'default' => 'no' ), array( 'type' => 'select', 'heading' => esc_attr__('Select a Folder', 'wpmf'), 'param_name' => 'gallery_folder_id', 'value' => $list_local + $list_cloud, 'default' => 0, 'dependency' => array( array( 'element' => 'gallery_folders', 'value' => 'yes', 'operator' => '==', ), ) ), ), ) ) ); wp_enqueue_style( 'wpmf-avada-style', WPMF_PLUGIN_URL . '/assets/css/avada_style.css', array(), WPMF_VERSION ); wp_enqueue_style( 'wpmf-slick-style', WPMF_PLUGIN_URL . 'assets/js/slick/slick.css', array(), WPMF_VERSION ); wp_enqueue_style( 'wpmf-slick-theme-style', WPMF_PLUGIN_URL . 'assets/js/slick/slick-theme.css', array(), WPMF_VERSION ); wp_enqueue_style( 'wpmf-avada-gallery-style', WPMF_PLUGIN_URL . 'assets/css/display-gallery/style-display-gallery.css', array(), WPMF_VERSION ); } wpmfFusionElementGallery(); add_action('fusion_builder_before_init', 'wpmfFusionElementGallery');