array( 'name' => esc_html__( 'Standard', 'sight' ), 'template' => SIGHT_PATH . 'render/handler/post-area-init.php', ), ); // Return. return apply_filters( 'sight_widget_portfolio_layouts', $layouts ); } /** * Get layouts (format: array) * * @access protected */ protected function get_array_layouts() { $widget_layouts = $this->widget_layouts(); $layouts = array(); foreach ( $widget_layouts as $key => $attrs ) { $layouts[ $key ] = $attrs['name']; } return $layouts; } /** * Register the widget controls. * * Adds different input fields to allow the user to change and customize the widget settings. * * @since 1.0.0 * * @access protected */ protected function _register_controls() { $this->start_controls_section( 'layout_section', array( 'label' => esc_html__( 'Layout', 'sight' ), ) ); do_action( 'sight/widget/fields/before', $this ); $this->add_control( 'layout', array( 'label' => esc_html__( 'Layout', 'sight' ), 'type' => Controls_Manager::SELECT, 'default' => 'standard', 'options' => $this->get_array_layouts(), ) ); $this->end_controls_section(); $this->start_controls_section( 'general', array( 'label' => esc_html__( 'General Settings', 'sight' ), ) ); do_action( 'sight/widget/fields/general/before', $this ); $this->add_control( 'source', array( 'label' => esc_html__( 'Source', 'sight' ), 'type' => Controls_Manager::SELECT, 'default' => 'projects', 'options' => array( 'projects' => esc_html__( 'Projects', 'sight' ), 'custom' => esc_html__( 'Images', 'sight' ), 'categories' => esc_html__( 'Categories', 'sight' ), 'post' => esc_html__( 'Post Attachments', 'sight' ), ), ) ); /* Type Projects */ $this->add_control( 'video', array( 'label' => esc_html__( 'Video Background', 'sight' ), 'type' => Controls_Manager::SELECT, 'default' => 'always', 'options' => array( 'none' => esc_html__( 'None', 'sight' ), 'always' => esc_html__( 'Always', 'sight' ), 'hover' => esc_html__( 'On Hover', 'sight' ), ), 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'source', 'operator' => '==', 'value' => 'projects', ), ), ), ) ); $this->add_control( 'video_controls', array( 'label' => esc_html__( 'Enable video controls', 'sight' ), 'type' => Controls_Manager::SWITCHER, 'return_value' => 'true', 'default' => 'true', 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'source', 'operator' => '==', 'value' => 'projects', ), array( 'name' => 'video', 'operator' => '!=', 'value' => 'none', ), ), ), ) ); /* Post */ $this->add_control( 'custom_post', array( 'label' => esc_html__( 'Post', 'sight' ), 'type' => 'custom_post', 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'source', 'operator' => '==', 'value' => 'post', ), ), ), ) ); /* Type Custom */ $this->add_control( 'custom_images', array( 'label' => esc_html__( 'Images', 'sight' ), 'type' => Controls_Manager::GALLERY, 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'source', 'operator' => '==', 'value' => 'custom', ), ), ), ) ); /* Common end */ $this->add_control( 'number_items', array( 'label' => esc_html__( 'Number of Items', 'sight' ), 'type' => Controls_Manager::NUMBER, 'min' => 1, 'max' => 100, 'step' => 1, 'default' => 10, ) ); do_action( 'sight/widget/fields/general/after', $this ); $this->end_controls_section(); $this->start_controls_section( 'meta', array( 'label' => esc_html__( 'Meta Settings', 'sight' ), ) ); do_action( 'sight/widget/fields/meta/after', $this ); $this->add_control( 'meta_title', array( 'label' => esc_html__( 'Display item title', 'sight' ), 'type' => Controls_Manager::SWITCHER, 'return_value' => 'true', 'default' => 'true', 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'source', 'operator' => '!=', 'value' => 'post', ), array( 'name' => 'source', 'operator' => '!=', 'value' => 'custom', ), ), ), ) ); $this->add_control( 'meta_caption', array( 'label' => esc_html__( 'Display item caption', 'sight' ), 'type' => Controls_Manager::SWITCHER, 'return_value' => 'true', 'default' => 'true', ) ); $this->add_control( 'meta_caption_length', array( 'label' => esc_html__( 'Caption length', 'sight' ), 'type' => Controls_Manager::NUMBER, 'min' => 1, 'max' => 1000, 'step' => 1, 'default' => 100, 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'meta_caption', 'operator' => '==', 'value' => 'true', ), ), ), ) ); $this->add_control( 'meta_category', array( 'label' => esc_html__( 'Display meta category', 'sight' ), 'type' => Controls_Manager::SWITCHER, 'return_value' => 'true', 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'source', 'operator' => '==', 'value' => 'projects', ), array( 'name' => 'projects_filter_post_type', 'operator' => '==', 'value' => 'sight-projects', ), ), ), ) ); $this->add_control( 'meta_date', array( 'label' => esc_html__( 'Display meta date', 'sight' ), 'type' => Controls_Manager::SWITCHER, 'return_value' => 'true', 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'source', 'operator' => '!=', 'value' => 'categories', ), ), ), ) ); do_action( 'sight/widget/fields/meta/after', $this ); $this->end_controls_section(); $this->start_controls_section( 'media', array( 'label' => esc_html__( 'Media Settings', 'sight' ), ) ); do_action( 'sight/widget/fields/media/before', $this ); $this->add_control( 'attachment_lightbox', array( 'label' => esc_html__( 'Enable lightbox', 'sight' ), 'type' => Controls_Manager::SWITCHER, 'return_value' => 'true', ) ); $this->add_control( 'attachment_lightbox_icon', array( 'label' => esc_html__( 'Display lightbox zoom icon', 'sight' ), 'type' => Controls_Manager::SWITCHER, 'return_value' => 'true', 'default' => 'true', 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'attachment_lightbox', 'operator' => '==', 'value' => 'true', ), ), ), ) ); $this->add_control( 'attachment_link_to', array( 'label' => esc_html__( 'Link To', 'sight' ), 'description' => sight_is_archive() ? null : esc_html__( 'If the source is "Categories" then the "Page" value will be ignored.', 'sight' ), 'type' => Controls_Manager::SELECT, 'default' => 'page', 'options' => array( 'none' => esc_html__( 'None', 'sight' ), 'media' => esc_html__( 'Media File', 'sight' ), 'page' => esc_html__( 'Page', 'sight' ), ), 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'attachment_lightbox', 'operator' => '!=', 'value' => 'true', ), ), ), ) ); $this->add_control( 'attachment_view_more', array( 'label' => esc_html__( 'Enable view more', 'sight' ), 'type' => Controls_Manager::SWITCHER, 'return_value' => 'true', 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'attachment_lightbox', 'operator' => '!=', 'value' => 'true', ), array( 'name' => 'attachment_link_to', 'operator' => '!=', 'value' => 'none', ), ), ), ) ); $this->add_control( 'attachment_size', array( 'label' => esc_html__( 'Size', 'sight' ), 'type' => Controls_Manager::SELECT, 'default' => 'large', 'options' => sight_get_list_available_image_sizes(), ) ); $this->add_control( 'attachment_orientation', array( 'label' => esc_html__( 'Orientation', 'sight' ), 'type' => Controls_Manager::SELECT, 'default' => 'landscape-16-9', 'options' => array( 'original' => esc_html__( 'Original', 'sight' ), 'landscape-4-3' => esc_html__( 'Landscape 4:3', 'sight' ), 'landscape-3-2' => esc_html__( 'Landscape 3:2', 'sight' ), 'landscape-16-9' => esc_html__( 'Landscape 16:9', 'sight' ), 'portrait-3-4' => esc_html__( 'Portrait 3:4', 'sight' ), 'portrait-2-3' => esc_html__( 'Portrait 2:3', 'sight' ), 'square' => esc_html__( 'Square', 'sight' ), ), ) ); do_action( 'sight/widget/fields/media/after', $this ); $this->end_controls_section(); $this->start_controls_section( 'typography', array( 'label' => esc_html__( 'Typography Settings', 'sight' ), ) ); do_action( 'sight/widget/fields/typography/before', $this ); $this->add_control( 'typography_heading', array( 'label' => esc_html__( 'Heading Font Size', 'sight' ), 'type' => Controls_Manager::TEXT, 'default' => '', 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'source', 'operator' => '!=', 'value' => 'post', ), array( 'name' => 'source', 'operator' => '!=', 'value' => 'custom', ), array( 'name' => 'meta_title', 'operator' => '==', 'value' => 'true', ), ), ), ) ); $this->add_control( 'typography_heading_tag', array( 'label' => esc_html__( 'Heading Tag', 'sight' ), 'type' => Controls_Manager::SELECT, 'default' => 'h3', 'options' => array( 'h1' => esc_html__( 'H1', 'sight' ), 'h2' => esc_html__( 'H2', 'sight' ), 'h3' => esc_html__( 'H3', 'sight' ), 'h4' => esc_html__( 'H4', 'sight' ), 'h5' => esc_html__( 'H5', 'sight' ), 'h6' => esc_html__( 'H6', 'sight' ), 'p' => esc_html__( 'P', 'sight' ), 'div' => esc_html__( 'DIV', 'sight' ), ), 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'source', 'operator' => '!=', 'value' => 'post', ), array( 'name' => 'source', 'operator' => '!=', 'value' => 'custom', ), array( 'name' => 'meta_title', 'operator' => '==', 'value' => 'true', ), ), ), ) ); $this->add_control( 'typography_caption', array( 'label' => esc_html__( 'Caption Font Size', 'sight' ), 'type' => Controls_Manager::TEXT, 'default' => '', 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'meta_caption', 'operator' => '==', 'value' => 'true', ), ), ), ) ); do_action( 'sight/widget/fields/typography/after', $this ); $this->end_controls_section(); $this->start_controls_section( 'query', array( 'label' => esc_html__( 'Query Settings', 'sight' ), 'conditions' => array( 'relation' => 'or', 'terms' => array( array( 'name' => 'source', 'operator' => '==', 'value' => 'projects', ), array( 'name' => 'source', 'operator' => '==', 'value' => 'categories', ), ), ), ) ); do_action( 'sight/widget/fields/query/before', $this ); $this->add_control( 'projects_filter_post_type', array( 'label' => esc_html__( 'Filter by Post Type', 'sight' ), 'type' => Controls_Manager::SELECT, 'default' => 'sight-projects', 'options' => sight_get_post_types_stack(), 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'source', 'operator' => '==', 'value' => 'projects', ), ), ), ) ); $this->add_control( 'projects_filter_categories', array( 'label' => esc_html__( 'Filter by Categories', 'sight' ), 'type' => Controls_Manager::SELECT2, 'multiple' => true, 'options' => sight_get_categories_stack(), 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'source', 'operator' => '==', 'value' => 'projects', ), array( 'name' => 'projects_filter_post_type', 'operator' => '==', 'value' => 'sight-projects', ), ), ), ) ); $this->add_control( 'projects_filter_offset', array( 'label' => esc_html__( 'Offset', 'sight' ), 'type' => Controls_Manager::TEXT, 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'source', 'operator' => '==', 'value' => 'projects', ), ), ), ) ); $this->add_control( 'projects_orderby', array( 'label' => esc_html__( 'Order By', 'sight' ), 'type' => Controls_Manager::SELECT, 'default' => 'date', 'options' => array( 'date' => esc_html__( 'Published Date', 'sight' ), 'modified' => esc_html__( 'Modified Date', 'sight' ), 'title' => esc_html__( 'Title', 'sight' ), 'rand' => esc_html__( 'Random', 'sight' ), 'views' => esc_html__( 'Views', 'sight' ), 'comment_count' => esc_html__( 'Comment Count', 'sight' ), 'ID' => esc_html__( 'ID', 'sight' ), ), 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'source', 'operator' => '==', 'value' => 'projects', ), ), ), ) ); $this->add_control( 'projects_order', array( 'label' => esc_html__( 'Order', 'sight' ), 'type' => Controls_Manager::SELECT, 'default' => 'DESC', 'options' => array( 'DESC' => esc_html__( 'Descending', 'sight' ), 'ASC' => esc_html__( 'Ascending', 'sight' ), ), 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'source', 'operator' => '==', 'value' => 'projects', ), ), ), ) ); $this->add_control( 'categories_filter_ids', array( 'label' => esc_html__( 'Filter by Categories', 'sight' ), 'type' => Controls_Manager::SELECT, 'options' => sight_get_categories_stack(), 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'source', 'operator' => '==', 'value' => 'categories', ), ), ), ) ); $this->add_control( 'categories_orderby', array( 'label' => esc_html__( 'Order By', 'sight' ), 'type' => Controls_Manager::SELECT, 'default' => 'name', 'options' => array( 'name' => esc_html__( 'Name', 'sight' ), 'count' => esc_html__( 'Posts count', 'sight' ), 'include' => esc_html__( 'Filter include', 'sight' ), 'ID' => esc_html__( 'ID', 'sight' ), ), 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'source', 'operator' => '==', 'value' => 'categories', ), ), ), ) ); $this->add_control( 'categories_order', array( 'label' => esc_html__( 'Order', 'sight' ), 'type' => Controls_Manager::SELECT, 'default' => 'ASC', 'options' => array( 'DESC' => esc_html__( 'Descending', 'sight' ), 'ASC' => esc_html__( 'Ascending', 'sight' ), ), 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'source', 'operator' => '==', 'value' => 'categories', ), ), ), ) ); do_action( 'sight/widget/fields/query/after', $this ); $this->end_controls_section(); $this->start_controls_section( 'color', array( 'label' => esc_html__( 'Color Settings', 'sight' ), ) ); do_action( 'sight/widget/fields/color/before', $this ); $this->add_control( 'color_heading', array( 'label' => esc_html__( 'Heading Color', 'sight' ), 'type' => Controls_Manager::COLOR, 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'source', 'operator' => '!=', 'value' => 'post', ), array( 'name' => 'source', 'operator' => '!=', 'value' => 'custom', ), array( 'name' => 'meta_title', 'operator' => '==', 'value' => 'true', ), ), ), ) ); $this->add_control( 'color_heading_hover', array( 'label' => esc_html__( 'Heading Hover Color', 'sight' ), 'type' => Controls_Manager::COLOR, 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'source', 'operator' => '!=', 'value' => 'post', ), array( 'name' => 'source', 'operator' => '!=', 'value' => 'custom', ), array( 'name' => 'meta_title', 'operator' => '==', 'value' => 'true', ), ), ), ) ); $this->add_control( 'color_caption', array( 'label' => esc_html__( 'Caption Color', 'sight' ), 'type' => Controls_Manager::COLOR, 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'meta_caption', 'operator' => '==', 'value' => 'true', ), ), ), ) ); do_action( 'sight/widget/fields/color/after', $this ); $this->end_controls_section(); do_action( 'sight/widget/fields/after', $this ); } /** * Render attributes from widget. * * @param array $attributes The attributes. * @param string $layout The layout. */ public function render_attributes( $attributes, $layout ) { // Change type for bool attributes. foreach ( $attributes as $key => $value ) { if ( 'true' === $attributes[ $key ] ) { $attributes[ $key ] = true; } elseif ( 'false' === $attributes[ $key ] ) { $attributes[ $key ] = false; } } // Set attribute for field 'Images'. if ( $attributes['custom_images'] ) { $attributes['custom_images'] = wp_list_pluck( $attributes['custom_images'], 'id' ); } return $attributes; } /** * Render options from widget. * * @param array $attributes The attributes. * @param string $layout The layout. */ public function render_options( $attributes, $layout ) { $options = array(); // Get layouts. $layouts = $this->widget_layouts(); // Render stack. foreach ( $attributes as $key => $settings ) { $clear_key = str_replace( $layout . '_', '', $key ); $search = $layout . '_' . $clear_key; if ( array_key_exists( $search, $attributes ) ) { $options[ $clear_key ] = $attributes[ $search ]; } } return $options; } /** * Render the widget output on the frontend. * * Written in PHP and used to generate the final HTML. * * @since 1.0.0 * * @access protected */ protected function render() { $attributes = $this->get_settings_for_display(); $layouts = $this->widget_layouts(); // Set id. $id = $this->get_id(); // Set layout. $layout = $attributes['layout']; // Render attributes. $attributes = $this->render_attributes( $attributes, $layout ); // Render options. $options = $this->render_options( $attributes, $layout ); // Set classes. $classes = " sight-block-portfolio-id-{$id}"; $classes .= " sight-block-portfolio-layout-{$layout}"; // Output. ?>
add_control( 'standard_filter_items', array( 'label' => esc_html__( 'Display category filter', 'sight' ), 'type' => Controls_Manager::SWITCHER, 'return_value' => 'true', 'default' => 'true', 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'layout', 'operator' => '==', 'value' => 'standard', ), array( 'name' => 'source', 'operator' => '==', 'value' => 'projects', ), array( 'name' => 'projects_filter_post_type', 'operator' => '==', 'value' => 'sight-projects', ), ), ), ) ); $object->add_control( 'standard_pagination_type', array( 'label' => esc_html__( 'Pagination type', 'sight' ), 'type' => Controls_Manager::SELECT, 'default' => 'ajax', 'options' => array( 'none' => esc_html__( 'None', 'sight' ), 'ajax' => esc_html__( 'Load More', 'sight' ), 'infinite' => esc_html__( 'Infinite Load', 'sight' ), ), 'conditions' => array( 'relation' => 'and', 'terms' => array( array( 'name' => 'layout', 'operator' => '==', 'value' => 'standard', ), array( 'name' => 'source', 'operator' => '==', 'value' => 'projects', ), ), ), ) ); } } new Sight_Widget_Portfolio_Layouts();