2017-02-10 49 views
0

希望有人能帮助我这个!我已经要求他们的支持,但“它超出了他们的支持水平”,他们甚至劝我在这里问。Divi图像库排序

因此,我使用Divi图片库作为我的wordpress目录,其中包含大量图片。 现在我正在寻找一种方式,图库中的图像是按文件名进行标准排序的。

任何指导方针如何改变他们的代码? 非常感谢!

回答

0

附件的文件名存储在posts表的'post_name'列中。因此,这个简单的改变应该会诀窍。

简单回答你的问题是:

  • 找到文件divi/includes/builder/main-modules.php
  • 搜索function get_gallery文件
  • 从那里,向下滚动稍微找到$attachments_args
  • 变化'orderby' => 'post__in''orderby' => 'post_name'

坏消息...

在更改主modules.php意味着要么你可以不再做更新或当你更新你就必须重新申请黑客。

+0

哇迈克尔,感谢您的支持!我会尽快尝试! 是不是有可能获得这个自定义代码的子主题,所以它不会被更改时更新主题? (我还在Divi中使用另一个childtheme for functions.php) 再次感谢! – Jokke86

0

迈克尔是正确的,但:

好消息

,您可以将其插入到你的子主题,一切都保存

更好的回答你的问题是:

  • 找到文件divi/includes/builder/main-modules.php
  • 复制ET_Builder_Module_Gallery
  • 插入到你的functions.php,包装和修改像迈克尔说,这

    function divi_child_theme_setup() { 
    
        if (class_exists('ET_Builder_Module')) { 
    
         class CHILD_ET_Builder_Module_Gallery extends ET_Builder_Module { 
          function init() { 
           $this->name  = esc_html__('Gallery', 'et_builder'); 
           $this->slug  = 'et_pb_gallery'; 
           $this->fb_support = true; 
    
           $this->whitelisted_fields = array(
            'src', 
            'gallery_ids', 
            'gallery_orderby', 
            'fullwidth', 
            'posts_number', 
            'show_title_and_caption', 
            'show_pagination', 
            'background_layout', 
            'auto', 
            'auto_speed', 
            'admin_label', 
            'module_id', 
            'module_class', 
            'zoom_icon_color', 
            'hover_overlay_color', 
            'hover_icon', 
            'orientation', 
           ); 
    
           $this->fields_defaults = array(
            'fullwidth'    => array('off'), 
            'posts_number'   => array(4, 'add_default_setting'), 
            'show_title_and_caption' => array('on'), 
            'show_pagination'  => array('on'), 
            'background_layout'  => array('light'), 
            'auto'     => array('off'), 
            'auto_speed'    => array('7000'), 
            'orientation'   => array('landscape'), 
           ); 
    
           $this->options_toggles = array(
            'general' => array(
             'toggles' => array(
              'main_content' => esc_html__('Images', 'et_builder'), 
              'elements'  => esc_html__('Elements', 'et_builder'), 
             ), 
            ), 
            'advanced' => array(
             'toggles' => array(
              'layout' => esc_html__('Layout', 'et_builder'), 
              'overlay' => esc_html__('Overlay', 'et_builder'), 
              'text' => array(
               'title' => esc_html__('Text', 'et_builder'), 
               'priority' => 49, 
              ), 
             ), 
            ), 
            'custom_css' => array(
             'toggles' => array(
              'animation' => array(
               'title' => esc_html__('Animation', 'et_builder'), 
               'priority' => 90, 
              ), 
             ), 
            ), 
           ); 
    
           $this->main_css_element = '%%order_class%%.et_pb_gallery'; 
           $this->advanced_options = array(
            'fonts' => array(
             'title' => array(
              'label' => esc_html__('Title', 'et_builder'), 
              'css'  => array(
               'main' => "{$this->main_css_element} .et_pb_gallery_title", 
              ), 
             ), 
             'caption' => array(
              'label' => esc_html__('Caption', 'et_builder'), 
              'use_all_caps' => true, 
              'css'  => array(
               'main' => "{$this->main_css_element} .mfp-title, {$this->main_css_element} .et_pb_gallery_caption", 
              ), 
              'line_height' => array(
               'range_settings' => array(
                'min' => '1', 
                'max' => '100', 
                'step' => '1', 
               ), 
              ), 
              'depends_show_if' => 'off' 
             ), 
            ), 
            'border' => array(
             'css' => array(
              'main' => "{$this->main_css_element} .et_pb_gallery_item", 
             ), 
            ), 
           ); 
    
           $this->custom_css_options = array(
            'gallery_item' => array(
             'label'  => esc_html__('Gallery Item', 'et_builder'), 
             'selector' => '.et_pb_gallery_item', 
            ), 
            'overlay' => array(
             'label'  => esc_html__('Overlay', 'et_builder'), 
             'selector' => '.et_overlay', 
            ), 
            'overlay_icon' => array(
             'label'  => esc_html__('Overlay Icon', 'et_builder'), 
             'selector' => '.et_overlay:before', 
            ), 
            'gallery_item_title' => array(
             'label'  => esc_html__('Gallery Item Title', 'et_builder'), 
             'selector' => '.et_pb_gallery_title', 
            ), 
            'gallery_item_caption' => array(
             'label'  => esc_html__('Gallery Item Caption', 'et_builder'), 
             'selector' => '.et_pb_gallery_caption', 
            ), 
            'gallery_pagination' => array(
             'label'  => esc_html__('Gallery Pagination', 'et_builder'), 
             'selector' => '.et_pb_gallery_pagination', 
            ), 
            'gallery_pagination_active' => array(
             'label'  => esc_html__('Pagination Active Page', 'et_builder'), 
             'selector' => '.et_pb_gallery_pagination a.active', 
            ), 
           ); 
          } 
    
          function get_fields() { 
           $fields = array(
            'src' => array(
             'label'   => esc_html__('Gallery Images', 'et_builder'), 
             'renderer'  => 'et_builder_get_gallery_settings', 
             'option_category' => 'basic_option', 
             'overwrite'  => array(
              'ids'   => 'gallery_ids', 
              'orderby'  => 'gallery_orderby', 
             ), 
             'toggle_slug'  => 'main_content', 
            ), 
            'gallery_ids' => array(
             'type' => 'hidden', 
             'class' => array('et-pb-gallery-ids-field'), 
             'computed_affects' => array(
              '__gallery', 
             ), 
            ), 
            'gallery_orderby' => array(
             'label' => esc_html__('Gallery Images', 'et_builder'), 
             'type' => 'hidden', 
             'class' => array('et-pb-gallery-ids-field'), 
             'computed_affects' => array(
              '__gallery', 
             ), 
             'toggle_slug' => 'main_content', 
            ), 
            'fullwidth' => array(
             'label'    => esc_html__('Layout', 'et_builder'), 
             'type'    => 'select', 
             'option_category' => 'layout', 
             'options'   => array(
              'off' => esc_html__('Grid', 'et_builder'), 
              'on' => esc_html__('Slider', 'et_builder'), 
             ), 
             'description'  => esc_html__('Toggle between the various blog layout types.', 'et_builder'), 
             'affects'   => array(
              'zoom_icon_color', 
              'caption_font', 
              'caption_text_color', 
              'caption_line_height', 
              'caption_font_size', 
              'caption_all_caps', 
              'caption_letter_spacing', 
              'hover_overlay_color', 
              'auto', 
              'posts_number', 
              'show_title_and_caption', 
              'orientation' 
             ), 
             'computed_affects' => array(
              '__gallery', 
             ), 
             'tab_slug' => 'advanced', 
             'toggle_slug' => 'layout', 
            ), 
            'posts_number' => array(
             'label'    => esc_html__('Images Number', 'et_builder'), 
             'type'    => 'text', 
             'option_category' => 'configuration', 
             'description'  => esc_html__('Define the number of images that should be displayed per page.', 'et_builder'), 
             'depends_show_if' => 'off', 
             'toggle_slug'  => 'main_content', 
            ), 
            'orientation'   => array(
             'label'    => esc_html__('Thumbnail Orientation', 'et_builder'), 
             'type'    => 'select', 
             'options_category' => 'configuration', 
             'options'   => array(
              'landscape' => esc_html__('Landscape', 'et_builder'), 
              'portrait' => esc_html__('Portrait', 'et_builder') 
             ), 
             'description'  => sprintf(
              '%1$s<br><small><em><strong>%2$s:</strong> %3$s <a href="//wordpress.org/plugins/force-regenerate-thumbnails" target="_blank">%4$s</a>.</em></small>', 
              esc_html__('Choose the orientation of the gallery thumbnails.', 'et_builder'), 
              esc_html__('Note', 'et_builder'), 
              esc_html__('If this option appears to have no effect, you might need to', 'et_builder'), 
              esc_html__('regenerate your thumbnails', 'et_builder') 
             ), 
             'depends_show_if' => 'off', 
             'computed_affects' => array(
              '__gallery', 
             ), 
             'tab_slug'   => 'advanced', 
             'toggle_slug'  => 'layout', 
            ), 
            'show_title_and_caption' => array(
             'label'    => esc_html__('Show Title and Caption', 'et_builder'), 
             'type'    => 'yes_no_button', 
             'option_category' => 'configuration', 
             'options'   => array(
              'on' => esc_html__('Yes', 'et_builder'), 
              'off' => esc_html__('No', 'et_builder'), 
             ), 
             'description'  => esc_html__('Whether or not to show the title and caption for images (if available).', 'et_builder'), 
             'depends_show_if' => 'off', 
             'toggle_slug'  => 'elements', 
            ), 
            'show_pagination' => array(
             'label'    => esc_html__('Show Pagination', 'et_builder'), 
             'type'    => 'yes_no_button', 
             'option_category' => 'configuration', 
             'options'   => array(
              'on' => esc_html__('Yes', 'et_builder'), 
              'off' => esc_html__('No', 'et_builder'), 
             ), 
             'toggle_slug'  => 'elements', 
             'description'  => esc_html__('Enable or disable pagination for this feed.', 'et_builder'), 
            ), 
            'background_layout' => array(
             'label'    => esc_html__('Text Color', 'et_builder'), 
             'type'    => 'select', 
             'option_category' => 'color_option', 
             'options'   => array(
              'light' => esc_html__('Dark', 'et_builder'), 
              'dark' => esc_html__('Light', 'et_builder'), 
             ), 
             'tab_slug'   => 'advanced', 
             'toggle_slug'  => 'text', 
             'description'  => esc_html__('Here you can choose whether your text should be light or dark. If you are working with a dark background, then your text should be light. If your background is light, then your text should be set to dark.', 'et_builder'), 
            ), 
            'auto' => array(
             'label'   => esc_html__('Automatic Animation', 'et_builder'), 
             'type'   => 'yes_no_button', 
             'option_category' => 'configuration', 
             'options'   => array(
              'off' => esc_html__('Off', 'et_builder'), 
              'on' => esc_html__('On', 'et_builder'), 
             ), 
             'affects' => array(
              'auto_speed', 
             ), 
             'depends_show_if' => 'on', 
             'depends_to'  => array(
              'fullwidth', 
             ), 
             'tab_slug'   => 'custom_css', 
             'toggle_slug'  => 'animation', 
             'description'  => esc_html__('If you would like the slider to slide automatically, without the visitor having to click the next button, enable this option and then adjust the rotation speed below if desired.', 'et_builder'), 
            ), 
            'auto_speed' => array(
             'label'    => esc_html__('Automatic Animation Speed (in ms)', 'et_builder'), 
             'type'    => 'text', 
             'option_category' => 'configuration', 
             'depends_default' => true, 
             'tab_slug'   => 'custom_css', 
             'toggle_slug'  => 'animation', 
             'description'  => esc_html__("Here you can designate how fast the slider fades between each slide, if 'Automatic Animation' option is enabled above. The higher the number the longer the pause between each rotation.", 'et_builder'), 
            ), 
            'zoom_icon_color' => array(
             'label'    => esc_html__('Zoom Icon Color', 'et_builder'), 
             'type'    => 'color-alpha', 
             'custom_color'  => true, 
             'depends_show_if' => 'off', 
             'tab_slug'   => 'advanced', 
             'toggle_slug'  => 'overlay', 
            ), 
            'hover_overlay_color' => array(
             'label'    => esc_html__('Hover Overlay Color', 'et_builder'), 
             'type'    => 'color-alpha', 
             'custom_color'  => true, 
             'depends_show_if' => 'off', 
             'tab_slug'   => 'advanced', 
             'toggle_slug'  => 'overlay', 
            ), 
            'hover_icon' => array(
             'label'    => esc_html__('Hover Icon Picker', 'et_builder'), 
             'type'    => 'text', 
             'option_category'  => 'configuration', 
             'class'    => array('et-pb-font-icon'), 
             'renderer'   => 'et_pb_get_font_icon_list', 
             'renderer_with_field' => true, 
             'tab_slug'   => 'advanced', 
             'toggle_slug'   => 'overlay', 
            ), 
            'disabled_on' => array(
             'label'   => esc_html__('Disable on', 'et_builder'), 
             'type'   => 'multiple_checkboxes', 
             'options'   => array(
              'phone' => esc_html__('Phone', 'et_builder'), 
              'tablet' => esc_html__('Tablet', 'et_builder'), 
              'desktop' => esc_html__('Desktop', 'et_builder'), 
             ), 
             'additional_att' => 'disable_on', 
             'option_category' => 'configuration', 
             'description'  => esc_html__('This will disable the module on selected devices', 'et_builder'), 
             'tab_slug'  => 'custom_css', 
             'toggle_slug'  => 'visibility', 
            ), 
            'admin_label' => array(
             'label'  => esc_html__('Admin Label', 'et_builder'), 
             'type'  => 'text', 
             'description' => esc_html__('This will change the label of the module in the builder for easy identification.', 'et_builder'), 
             'toggle_slug' => 'admin_label', 
            ), 
            'module_id' => array(
             'label'   => esc_html__('CSS ID', 'et_builder'), 
             'type'   => 'text', 
             'option_category' => 'configuration', 
             'tab_slug'  => 'custom_css', 
             'toggle_slug'  => 'classes', 
             'option_class' => 'et_pb_custom_css_regular', 
            ), 
            'module_class' => array(
             'label'   => esc_html__('CSS Class', 'et_builder'), 
             'type'   => 'text', 
             'option_category' => 'configuration', 
             'tab_slug'  => 'custom_css', 
             'toggle_slug'  => 'classes', 
             'option_class' => 'et_pb_custom_css_regular', 
            ), 
            '__gallery' => array(
             'type' => 'computed', 
             'computed_callback' => array('ET_Builder_Module_Gallery', 'get_gallery'), 
             'computed_depends_on' => array(
              'gallery_ids', 
              'gallery_orderby', 
              'fullwidth', 
              'orientation', 
             ), 
            ), 
           ); 
    
           return $fields; 
          } 
    
          /** 
          * Get attachment data for gallery module 
          * 
          * @param array $args { 
          *  Gallery Options 
          * 
          *  @type array $gallery_ids  Attachment Ids of images to be included in gallery. 
          *  @type string $gallery_orderby `orderby` arg for query. Optional. 
          *  @type string $fullwidth  on|off to determine grid/slider layout 
          *  @type string $orientation  Orientation of thumbnails (landscape|portrait). 
          * } 
          * @param array $conditional_tags 
          * @param array $current_page 
          * 
          * @return array Attachments data 
          */ 
          static function get_gallery($args = array(), $conditional_tags = array(), $current_page = array()) { 
           $attachments = array(); 
    
           $defaults = array(
            'gallery_ids'  => array(), 
            'gallery_orderby' => '', 
            'fullwidth'  => 'off', 
            'orientation'  => 'landscape', 
           ); 
    
           $args = wp_parse_args($args, $defaults); 
    
           $attachments_args = array(
            'include'  => $args['gallery_ids'], 
            'post_status' => 'inherit', 
            'post_type'  => 'attachment', 
            'post_mime_type' => 'image', 
            'order'   => 'ASC', 
            'orderby'  => 'post_name', 
           ); 
    
           if ('rand' === $args['gallery_orderby']) { 
            $attachments_args['orderby'] = 'rand'; 
           } 
    
           if ('on' === $args['fullwidth']) { 
            $width = 1080; 
            $height = 9999; 
           } else { 
            $width = 400; 
            $height = ('landscape' === $args['orientation']) ? 284 : 516; 
           } 
    
           $width = (int) apply_filters('et_pb_gallery_image_width', $width); 
           $height = (int) apply_filters('et_pb_gallery_image_height', $height); 
    
           $_attachments = get_posts($attachments_args); 
    
           foreach ($_attachments as $key => $val) { 
            $attachments[$key] = $_attachments[$key]; 
            $attachments[$key]->image_src_full = wp_get_attachment_image_src($val->ID, 'full'); 
            $attachments[$key]->image_src_thumb = wp_get_attachment_image_src($val->ID, array($width, $height)); 
           } 
    
           return $attachments; 
          } 
    
          function shortcode_callback($atts, $content = null, $function_name) { 
           $module_id    = $this->shortcode_atts['module_id']; 
           $module_class   = $this->shortcode_atts['module_class']; 
           $gallery_ids   = $this->shortcode_atts['gallery_ids']; 
           $fullwidth    = $this->shortcode_atts['fullwidth']; 
           $show_title_and_caption = $this->shortcode_atts['show_title_and_caption']; 
           $background_layout  = $this->shortcode_atts['background_layout']; 
           $posts_number   = $this->shortcode_atts['posts_number']; 
           $show_pagination  = $this->shortcode_atts['show_pagination']; 
           $gallery_orderby  = $this->shortcode_atts['gallery_orderby']; 
           $zoom_icon_color  = $this->shortcode_atts['zoom_icon_color']; 
           $hover_overlay_color = $this->shortcode_atts['hover_overlay_color']; 
           $hover_icon    = $this->shortcode_atts['hover_icon']; 
           $auto     = $this->shortcode_atts['auto']; 
           $auto_speed    = $this->shortcode_atts['auto_speed']; 
           $orientation   = $this->shortcode_atts['orientation']; 
    
           $module_class = ET_Builder_Element::add_module_order_class($module_class, $function_name); 
    
           if ('' !== $zoom_icon_color) { 
            ET_Builder_Element::set_style($function_name, array(
             'selector' => '%%order_class%% .et_overlay:before', 
             'declaration' => sprintf(
              'color: %1$s !important;', 
              esc_html($zoom_icon_color) 
             ), 
            )); 
           } 
    
           if ('' !== $hover_overlay_color) { 
            ET_Builder_Element::set_style($function_name, array(
             'selector' => '%%order_class%% .et_overlay', 
             'declaration' => sprintf(
              'background-color: %1$s; 
              border-color: %1$s;', 
              esc_html($hover_overlay_color) 
             ), 
            )); 
           } 
    
           // Get gallery item data 
           $attachments = self::get_gallery(array(
            'gallery_ids'  => $gallery_ids, 
            'gallery_orderby' => $gallery_orderby, 
            'fullwidth'  => $fullwidth, 
            'orientation'  => $orientation, 
           )); 
    
           if (empty($attachments)) { 
            return ''; 
           } 
    
           wp_enqueue_script('hashchange'); 
    
           $fullwidth_class = 'on' === $fullwidth ? ' et_pb_slider et_pb_gallery_fullwidth' : ' et_pb_gallery_grid'; 
           $background_class = " et_pb_bg_layout_{$background_layout}"; 
    
           $module_class .= 'on' === $auto && 'on' === $fullwidth ? ' et_slider_auto et_slider_speed_' . esc_attr($auto_speed) : ''; 
    
           $posts_number = 0 === intval($posts_number) ? 4 : intval($posts_number); 
    
           $output = sprintf(
            '<div%1$s class="et_pb_module et_pb_gallery%2$s%3$s%4$s clearfix"> 
             <div class="et_pb_gallery_items et_post_gallery" data-per_page="%5$d">', 
            ('' !== $module_id ? sprintf(' id="%1$s"', esc_attr($module_id)) : ''), 
            ('' !== $module_class ? sprintf(' %1$s', esc_attr(ltrim($module_class))) : ''), 
            esc_attr($fullwidth_class), 
            esc_attr($background_class), 
            esc_attr($posts_number) 
           ); 
    
           foreach ($attachments as $id => $attachment) { 
            $data_icon = '' !== $hover_icon 
             ? sprintf(
              ' data-icon="%1$s"', 
              esc_attr(et_pb_process_font_icon($hover_icon)) 
             ) 
             : ''; 
    
            $image_output = sprintf(
             '<a href="%1$s" title="%2$s"> 
              <img src="%3$s" alt="%2$s" /> 
              <span class="et_overlay%4$s"%5$s></span> 
             </a>', 
             esc_url($attachment->image_src_full[0]), 
             esc_attr($attachment->post_title), 
             esc_url($attachment->image_src_thumb[0]), 
             ('' !== $hover_icon ? ' et_pb_inline_icon' : ''), 
             $data_icon 
            ); 
    
            $output .= sprintf(
             '<div class="et_pb_gallery_item%2$s%1$s">', 
             esc_attr($background_class), 
             ('on' !== $fullwidth ? ' et_pb_grid_item' : '') 
            ); 
            $output .= " 
             <div class='et_pb_gallery_image {$orientation}'> 
              $image_output 
             </div>"; 
    
            if ('on' !== $fullwidth && 'on' === $show_title_and_caption) { 
             if (trim($attachment->post_title)) { 
              $output .= " 
               <h3 class='et_pb_gallery_title'> 
               " . wptexturize($attachment->post_title) . " 
               </h3>"; 
             } 
             if (trim($attachment->post_excerpt)) { 
             $output .= " 
               <p class='et_pb_gallery_caption'> 
               " . wptexturize($attachment->post_excerpt) . " 
               </p>"; 
             } 
            } 
            $output .= "</div>"; 
           } 
    
           $output .= "</div><!-- .et_pb_gallery_items -->"; 
    
           if ('on' !== $fullwidth && 'on' === $show_pagination) { 
            $output .= "<div class='et_pb_gallery_pagination'></div>"; 
           } 
    
           $output .= "</div><!-- .et_pb_gallery -->"; 
    
           return $output; 
          } 
         } 
    
         $cgm = new CHILD_ET_Builder_Module_Gallery(); 
         remove_shortcode('et_pb_gallery'); 
         add_shortcode('et_pb_gallery', array($cgm, '_shortcode_callback')); 
    
        } 
    
    } 
    add_action('wp', 'divi_child_theme_setup', 9999); 
    

完整的代码,我使用的代码从迪维3.0.51。玩得开心