daily pastebin goal
40%
SHARE
TWEET

my_slider.php

ThemePackNet Apr 5th, 2019 97 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. class My_Slider_Widget extends \Elementor\Widget_Base {
  4.  
  5.     public function get_name() {
  6.         return 'my-slider';
  7.     }
  8.  
  9.     public function get_title() {
  10.         return __( 'My Slider', 'plugin-name' );
  11.     }
  12.  
  13.     public function get_icon() {
  14.         return 'fa fa-code';
  15.     }
  16.  
  17.     public function get_categories() {
  18.         return [ 'general' ];
  19.     }
  20.  
  21.     protected function _register_controls() {
  22.  
  23.         $this->start_controls_section(
  24.             'content_section',
  25.             [
  26.                 'label' => __( 'Content', 'plugin-name' ),
  27.                 'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
  28.             ]
  29.         );
  30.  
  31.         $repeater = new \Elementor\Repeater();
  32.  
  33.         $repeater->add_control(
  34.             'slide_title', [
  35.                 'label' => __( 'Title', 'plugin-domain' ),
  36.                 'type' => \Elementor\Controls_Manager::TEXT,
  37.                 'default' => __( 'Slide title' , 'plugin-domain' ),
  38.                 'label_block' => true,
  39.             ]
  40.         );
  41.  
  42.         $repeater->add_control(
  43.             'slide_content', [
  44.                 'label' => __( 'Content', 'plugin-domain' ),
  45.                 'type' => \Elementor\Controls_Manager::WYSIWYG,
  46.                 'default' => __( 'Slide Content' , 'plugin-domain' ),
  47.                 'show_label' => true,
  48.             ]
  49.         );
  50.  
  51.         $repeater->add_control(
  52.             'slide_desc',
  53.             [
  54.                 'label' => __( 'Slide description', 'plugin-domain' ),
  55.                 'type' => \Elementor\Controls_Manager::TEXT,
  56.                 'show_label' => true,
  57.             ]
  58.         );
  59.  
  60.         $repeater->add_control(
  61.             'slide_image',
  62.             [
  63.                 'label' => __( 'Slide image', 'plugin-domain' ),
  64.                 'type' => \Elementor\Controls_Manager::MEDIA,
  65.                 'show_label' => true,
  66.             ]
  67.         );
  68.  
  69.         $this->add_control(
  70.             'slides',
  71.             [
  72.                 'label' => __( 'Slides', 'plugin-domain' ),
  73.                 'type' => \Elementor\Controls_Manager::REPEATER,
  74.                 'fields' => $repeater->get_controls(),
  75.                 'default' => [
  76.                     [
  77.                         'list_title' => __( 'Slide #1', 'plugin-domain' ),
  78.                         'list_content' => __( 'Slide content', 'plugin-domain' ),
  79.                     ],
  80.                 ]
  81.             ]
  82.         );
  83.         $this->end_controls_section();
  84.  
  85.         $this->start_controls_section(
  86.             'setting_section',
  87.             [
  88.                 'label' => __( 'Slider Settings', 'plugin-name' ),
  89.                 'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
  90.             ]
  91.         );
  92.  
  93.         $this->add_control(
  94.             'fade',
  95.             [
  96.                 'label' => __( 'Fade effecct?', 'plugin-domain' ),
  97.                 'type' => \Elementor\Controls_Manager::SWITCHER,
  98.                 'label_on' => __( 'Yes', 'your-plugin' ),
  99.                 'label_off' => __( 'No', 'your-plugin' ),
  100.                 'return_value' => 'yes',
  101.                 'default' => 'no',
  102.             ]
  103.         );
  104.         $this->add_control(
  105.             'loop',
  106.             [
  107.                 'label' => __( 'Loop?', 'plugin-domain' ),
  108.                 'type' => \Elementor\Controls_Manager::SWITCHER,
  109.                 'label_on' => __( 'Yes', 'your-plugin' ),
  110.                 'label_off' => __( 'No', 'your-plugin' ),
  111.                 'return_value' => 'yes',
  112.                 'default' => 'yes',
  113.             ]
  114.         );
  115.         $this->add_control(
  116.             'arrows',
  117.             [
  118.                 'label' => __( 'Show arrows?', 'plugin-domain' ),
  119.                 'type' => \Elementor\Controls_Manager::SWITCHER,
  120.                 'label_on' => __( 'Show', 'your-plugin' ),
  121.                 'label_off' => __( 'Hide', 'your-plugin' ),
  122.                 'return_value' => 'yes',
  123.                 'default' => 'yes',
  124.             ]
  125.         );
  126.  
  127.         $this->add_control(
  128.             'dots',
  129.             [
  130.                 'label' => __( 'Show dots?', 'plugin-domain' ),
  131.                 'type' => \Elementor\Controls_Manager::SWITCHER,
  132.                 'label_on' => __( 'Show', 'your-plugin' ),
  133.                 'label_off' => __( 'Hide', 'your-plugin' ),
  134.                 'return_value' => 'yes',
  135.                 'default' => 'yes',
  136.             ]
  137.         );
  138.  
  139.         $this->add_control(
  140.             'autoplay',
  141.             [
  142.                 'label' => __( 'Autoplay?', 'plugin-domain' ),
  143.                 'type' => \Elementor\Controls_Manager::SWITCHER,
  144.                 'label_on' => __( 'Yes', 'your-plugin' ),
  145.                 'label_off' => __( 'No', 'your-plugin' ),
  146.                 'return_value' => 'yes',
  147.                 'default' => 'yes',
  148.             ]
  149.         );
  150.  
  151.         $this->add_control(
  152.             'autoplay_time',
  153.             [
  154.                 'label' => __( 'Autoplay Time', 'plugin-domain' ),
  155.                 'type' => \Elementor\Controls_Manager::TEXT,
  156.                 'default' => '5000',
  157.                 'condition' => [
  158.                     'autoplay' => 'yes',
  159.                 ],
  160.             ]
  161.         );
  162.  
  163.         $this->end_controls_section();
  164.  
  165.     }
  166.  
  167.     protected function render() {
  168.  
  169.         $settings = $this->get_settings_for_display();
  170.  
  171.         if($settings['slides']) {
  172.             $dynamic_id = rand(78676, 967698);
  173.             if(count($settings['slides']) > 1) {
  174.                 if($settings['fade'] == 'yes') {
  175.                     $fade = 'true';
  176.                 } else {
  177.                     $fade = 'false';
  178.                 }
  179.                 if($settings['arrows'] == 'yes') {
  180.                     $arrows = 'true';
  181.                 } else {
  182.                     $arrows = 'false';
  183.                 }
  184.                 if($settings['dots'] == 'yes') {
  185.                     $dots = 'true';
  186.                 } else {
  187.                     $dots = 'false';
  188.                 }
  189.                 if($settings['autoplay'] == 'yes') {
  190.                     $autoplay = 'true';
  191.                 } else {
  192.                     $autoplay = 'false';
  193.                 }
  194.                 if($settings['loop'] == 'yes') {
  195.                     $loop = 'true';
  196.                 } else {
  197.                     $loop = 'false';
  198.                 }
  199.                 echo '<script>
  200.                     jQuery(document).ready(function($) {
  201.                         $("#slides-'.$dynamic_id.'").slick({
  202.                             arrows: '.$arrows.',
  203.                             prevArrow: "<i class=\'fa fa-angle-left\'></i>",
  204.                             nextArrow: "<i class=\'fa fa-angle-right\'></i>",
  205.                             dots: '.$dots.',
  206.                             fade: '.$fade.',
  207.                             autoplay: '.$autoplay.',
  208.                             loop: '.$loop.',';
  209.  
  210.                             if($autoplay == 'true') {
  211.                                 echo 'autoplaySpeed: '.$settings['autoplay_time'].'';
  212.                             }                  
  213.  
  214.                             echo '
  215.                         });
  216.                     });
  217.                 </script>';
  218.             }
  219.             echo '<div id="slides-'.$dynamic_id.'" class="slides">';
  220.             foreach($settings['slides'] as $slide) {
  221.                 echo '<div class="single-slide-item" style="background-image:url('.wp_get_attachment_image_url($slide['slide_image']['id'], 'large').')">
  222.                     <div class="row">
  223.                         <div class="col my-auto">
  224.                             '.wpautop($slide['slide_content']).'
  225.                         </div>
  226.                     </div>
  227.                     <div class="slide-info">
  228.                         <h4>'.$slide['slide_title'].'</h4>
  229.                         '.$slide['slide_desc'].'
  230.                     </div>
  231.                 </div>';
  232.             }
  233.             echo '</div>';
  234.         }
  235.        
  236.  
  237.     }
  238.  
  239. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top