/**
  * The shortcode function.
  *
  * @since  1.0.0
  * @param  array  $atts      The user-inputted arguments.
  * @param  string $content   The enclosed content (if the shortcode is used in its enclosing form).
  * @param  string $shortcode The shortcode tag, useful for shared callback functions.
  * @return string
  */
 public function do_shortcode($atts, $content = null, $shortcode = '')
 {
     // Set up the default arguments.
     $defaults = array('listing_layout' => 'masonry-layout', 'loading_mode' => 'portfolio-ajax-pagination-mode', 'loading_animation' => 'loading-animation-move-up', 'filter_visible' => 'yes', 'order_filter_visible' => 'no', 'posts_per_page' => 9, 'grid_col' => 3, 'item_margin' => 4, 'echo' => false, 'template' => '', 'posts_format' => 'post-format-all', 'custom_class' => '');
     /**
      * Parse the arguments.
      *
      * @link http://codex.wordpress.org/Function_Reference/shortcode_atts
      */
     $atts = shortcode_atts($defaults, $atts, $shortcode);
     $atts['filter_visible'] = (bool) ($atts['filter_visible'] === 'yes') ? true : false;
     $atts['order_filter_visible'] = (bool) ($atts['order_filter_visible'] === 'yes') ? true : false;
     // Make sure we return and don't echo.
     $atts['echo'] = false;
     parent::__construct();
     return $this->the_portfolio($atts);
 }