'reviews', 'section_name' => '', 'active_callback' => array(), ), $settings ); // Set fields. $fields = array( array( 'key' => $settings['field_prefix'] . '_showMetaCategory', 'label' => esc_html__( 'Category', 'authentic' ), 'section' => $settings['section_name'], 'type' => 'toggle', 'default' => true, 'active_callback' => $settings['active_callback'], ), array( 'key' => $settings['field_prefix'] . '_showMetaAuthor', 'label' => esc_html__( 'Author', 'authentic' ), 'section' => $settings['section_name'], 'type' => 'toggle', 'default' => true, 'active_callback' => $settings['active_callback'], ), array( 'key' => $settings['field_prefix'] . '_showMetaDate', 'label' => esc_html__( 'Date', 'authentic' ), 'section' => $settings['section_name'], 'type' => 'toggle', 'default' => true, 'active_callback' => $settings['active_callback'], ), array( 'key' => $settings['field_prefix'] . '_showMetaComments', 'label' => esc_html__( 'Comments', 'authentic' ), 'section' => $settings['section_name'], 'type' => 'toggle', 'default' => false, 'active_callback' => $settings['active_callback'], ), abr_post_views_enabled() ? array( 'key' => $settings['field_prefix'] . '_showMetaViews', 'label' => esc_html__( 'Views', 'authentic' ), 'section' => $settings['section_name'], 'type' => 'toggle', 'default' => false, 'active_callback' => $settings['active_callback'], ) : array(), abr_powerkit_module_enabled( 'reading_time' ) ? array( 'key' => $settings['field_prefix'] . '_showMetaReadingTime', 'label' => esc_html__( 'Reading Time', 'authentic' ), 'section' => $settings['section_name'], 'type' => 'toggle', 'default' => false, 'active_callback' => $settings['active_callback'], ) : array(), array( 'key' => uniqid(), 'section' => $settings['section_name'], 'type' => 'separator', 'active_callback' => $settings['active_callback'], ), array( 'key' => $settings['field_prefix'] . 'MetaCompact', 'label' => esc_html__( 'Display compact post meta', 'authentic' ), 'section' => $settings['section_name'], 'type' => 'toggle', 'default' => false, 'active_callback' => $settings['active_callback'], ), ); return $fields; } /** * Get types of layout. * * @since 1.0.0 * @access private */ public function get_types_of_layouts() { $types = array( 'reviews-1' => 'reviews-1', 'reviews-2' => 'reviews-2', 'reviews-3' => 'reviews-3', 'reviews-4' => 'reviews-4', 'reviews-5' => 'reviews-5', 'reviews-6' => 'reviews-6', 'reviews-7' => 'reviews-7', 'reviews-8' => 'reviews-8', ); return $types; } /** * Get name of layout by key. * * @param mixed $key The key. */ public function get_name_of_layout_by( $key ) { switch ( $key ) { case 'reviews-1': return esc_html__( 'Reviews 1', 'absolute-reviews' ); case 'reviews-2': return esc_html__( 'Reviews 2', 'absolute-reviews' ); case 'reviews-3': return esc_html__( 'Reviews 3', 'absolute-reviews' ); case 'reviews-4': return esc_html__( 'Reviews 4', 'absolute-reviews' ); case 'reviews-5': return esc_html__( 'Reviews 5', 'absolute-reviews' ); case 'reviews-6': return esc_html__( 'Reviews 6', 'absolute-reviews' ); case 'reviews-7': return esc_html__( 'Reviews 7', 'absolute-reviews' ); case 'reviews-8': return esc_html__( 'Reviews 8', 'absolute-reviews' ); } } /** * Get icon of layout by key. * * @param mixed $key The key. */ public function get_icon_of_layout_by( $key ) { switch ( $key ) { case 'reviews-1': return ''; case 'reviews-2': return ''; case 'reviews-3': return ''; case 'reviews-4': return ''; case 'reviews-5': return '3/5'; case 'reviews-6': return ''; case 'reviews-7': return ''; case 'reviews-8': return ''; } } /** * Register layout. * * @param array $layouts List of layouts. */ public function register_layout( $layouts = array() ) { $image_sizes = abr_get_list_available_image_sizes(); $types = $this->get_types_of_layouts(); foreach ( $types as $type ) { $layouts[ $type ] = array( 'location' => array(), 'name' => $this->get_name_of_layout_by( $type ), 'template' => dirname( __FILE__ ) . '/posts-block.php', 'icon' => $this->get_icon_of_layout_by( $type ), 'sections' => array( 'general' => array( 'title' => esc_html__( 'Block Settings', 'absolute-reviews' ), 'priority' => 5, 'open' => true, ), 'reviewsLargeMeta' => array( 'title' => esc_html__( 'Large Post Meta Settings', 'absolute-reviews' ), 'priority' => 10, ), 'reviewsSmallMeta' => array( 'title' => esc_html__( 'Small Post Meta Settings', 'absolute-reviews' ), 'priority' => 20, ), 'reviewsThumbnail' => array( 'title' => esc_html__( 'Thumbnail Settings', 'absolute-reviews' ), 'priority' => 30, ), 'reviewsTypography' => array( 'title' => esc_html__( 'Typography Settings', 'absolute-reviews' ), 'priority' => 40, ), ), 'hide_fields' => array( 'showMetaCategory', 'showMetaAuthor', 'showMetaDate', 'showMetaComments', 'showMetaViews', 'showMetaReadingTime', 'showMetaShares', 'showExcerpt', 'showViewPostButton', 'showPagination', 'imageSize', 'postsCount', 'colorText', 'colorHeading', 'colorHeadingHover', 'colorText', 'colorMeta', 'colorMetaHover', 'colorMetaLinks', 'colorMetaLinksHover', ), 'fields' => array_merge( array( array( 'key' => 'reviewType', 'label' => esc_html__( 'Filter by Review Type', 'absolute-reviews' ), 'section' => 'query', 'type' => 'select', 'multiple' => false, 'choices' => array( 'all' => esc_html__( 'All types', 'absolute-reviews' ), 'percentage' => esc_html__( 'Percentage (1-100%)', 'absolute-reviews' ), 'point-5' => esc_html__( 'Points (1-5)', 'absolute-reviews' ), 'point-10' => esc_html__( 'Points (1-10)', 'absolute-reviews' ), 'star' => esc_html__( 'Stars (1-5)', 'absolute-reviews' ), ), 'default' => 'all', ), array( 'key' => 'reviewsPostsCount', 'label' => esc_html__( 'Posts Count', 'absolute-reviews' ), 'section' => 'general', 'type' => 'number', 'default' => 5, 'min' => 1, 'max' => 100, ), array( 'key' => 'imageSize', 'label' => esc_html__( 'Image Size', 'absolute-reviews' ), 'section' => 'reviewsThumbnail', 'type' => 'select', 'default' => 'large', 'choices' => $image_sizes, 'active_callback' => array( array( 'field' => 'layout', 'operator' => '!=', 'value' => 'reviews-3', ), array( 'field' => 'layout', 'operator' => '!=', 'value' => 'reviews-4', ), array( 'field' => 'layout', 'operator' => '!=', 'value' => 'reviews-5', ), ), ), array( 'key' => 'largeImageSize', 'label' => esc_html__( 'Large Post Image Size', 'absolute-reviews' ), 'section' => 'reviewsThumbnail', 'type' => 'select', 'default' => 'large', 'choices' => $image_sizes, 'active_callback' => array( array( array( 'field' => 'layout', 'operator' => '==', 'value' => 'reviews-3', ), array( 'field' => 'layout', 'operator' => '==', 'value' => 'reviews-4', ), array( 'field' => 'layout', 'operator' => '==', 'value' => 'reviews-5', ), ), ), ), array( 'key' => 'smallImageSize', 'label' => esc_html__( 'Small Post Image Size', 'absolute-reviews' ), 'section' => 'reviewsThumbnail', 'type' => 'select', 'default' => 'large', 'choices' => $image_sizes, 'active_callback' => array( array( array( 'field' => 'layout', 'operator' => '==', 'value' => 'reviews-3', ), array( 'field' => 'layout', 'operator' => '==', 'value' => 'reviews-4', ), array( 'field' => 'layout', 'operator' => '==', 'value' => 'reviews-5', ), ), ), ), // Typography. array( 'key' => 'typographyHeading', 'label' => esc_html__( 'Heading Font Size', 'absolute-reviews' ), 'section' => 'reviewsTypography', 'type' => 'dimension', 'default' => '1rem', 'output' => array( array( 'element' => '$ .entry-title a', 'property' => 'font-size', 'suffix' => '!important', ), ), 'active_callback' => array( array( 'field' => 'layout', 'operator' => '!=', 'value' => 'reviews-3', ), array( 'field' => 'layout', 'operator' => '!=', 'value' => 'reviews-4', ), array( 'field' => 'layout', 'operator' => '!=', 'value' => 'reviews-5', ), ), ), array( 'key' => 'typographyLargeHeading', 'label' => esc_html__( 'Heading Post Large Font Size', 'absolute-reviews' ), 'section' => 'reviewsTypography', 'type' => 'dimension', 'default' => '1.5rem', 'output' => array( array( 'element' => '$ .abr-post-item:first-child .entry-title a', 'property' => 'font-size', 'suffix' => '!important', ), ), 'active_callback' => array( array( array( 'field' => 'layout', 'operator' => '==', 'value' => 'reviews-3', ), array( 'field' => 'layout', 'operator' => '==', 'value' => 'reviews-4', ), array( 'field' => 'layout', 'operator' => '==', 'value' => 'reviews-5', ), ), ), ), array( 'key' => 'typographySmallHeading', 'label' => esc_html__( 'Heading Post Small Font Size', 'absolute-reviews' ), 'section' => 'reviewsTypography', 'type' => 'dimension', 'default' => '1rem', 'output' => array( array( 'element' => '$ .abr-post-item:nth-child(n+2) .entry-title a', 'property' => 'font-size', 'suffix' => '!important', ), ), 'active_callback' => array( array( array( 'field' => 'layout', 'operator' => '==', 'value' => 'reviews-3', ), array( 'field' => 'layout', 'operator' => '==', 'value' => 'reviews-4', ), array( 'field' => 'layout', 'operator' => '==', 'value' => 'reviews-5', ), ), ), ), // Color Settings. array( 'key' => 'colorHeading', 'label' => esc_html__( 'Heading', 'absolute-reviews' ), 'section' => 'color', 'type' => 'color', 'default' => '#000', 'output' => array( array( 'element' => '$ .abr-variation-default .entry-title a', 'property' => 'color', 'suffix' => '!important', ), ), ), array( 'key' => 'colorHeadingHover', 'label' => esc_html__( 'Heading Hover', 'absolute-reviews' ), 'section' => 'color', 'type' => 'color', 'default' => '#5a5a5a', 'output' => array( array( 'element' => '$ .abr-variation-default .entry-title a:hover, $ .abr-variation-default .entry-title a:focus', 'property' => 'color', 'suffix' => '!important', ), ), ), array( 'key' => 'colorMeta', 'label' => esc_html__( 'Post Meta', 'absolute-reviews' ), 'section' => 'color', 'type' => 'color', 'default' => '', 'output' => array( array( 'element' => '$ .abr-variation-default .post-meta span, $ .abr-variation-default .post-categories span', 'property' => 'color', 'suffix' => '!important', ), ), ), array( 'key' => 'colorMetaLinks', 'label' => esc_html__( 'Post Meta Links', 'absolute-reviews' ), 'section' => 'color', 'type' => 'color', 'default' => '', 'output' => array( array( 'element' => '$ .abr-variation-default .post-meta a, $ .abr-variation-default .post-categories a', 'property' => 'color', 'suffix' => '!important', ), ), ), array( 'key' => 'colorMetaLinksHover', 'label' => esc_html__( 'Post Meta Links Hover', 'absolute-reviews' ), 'section' => 'color', 'type' => 'color', 'default' => '', 'output' => array( array( 'element' => '$ .abr-variation-default .post-meta a:hover, $ .abr-variation-default .post-meta a:focus, $ .abr-variation-default .post-categories a:hover, $ .abr-variation-default .post-categories a:focus', 'property' => 'color', 'suffix' => '!important', ), ), ), ), // Meta Settings. $this->get_meta_fields( array( 'field_prefix' => 'reviews', 'section_name' => 'meta', 'active_callback' => array( array( 'field' => 'layout', 'operator' => '!=', 'value' => 'reviews-3', ), array( 'field' => 'layout', 'operator' => '!=', 'value' => 'reviews-4', ), array( 'field' => 'layout', 'operator' => '!=', 'value' => 'reviews-5', ), ), ) ), $this->get_meta_fields( array( 'field_prefix' => 'reviewsLarge', 'section_name' => 'reviewsLargeMeta', 'active_callback' => array( array( array( 'field' => 'layout', 'operator' => '==', 'value' => 'reviews-3', ), array( 'field' => 'layout', 'operator' => '==', 'value' => 'reviews-4', ), array( 'field' => 'layout', 'operator' => '==', 'value' => 'reviews-5', ), ), ), ) ), $this->get_meta_fields( array( 'field_prefix' => 'reviewsSmall', 'section_name' => 'reviewsSmallMeta', 'active_callback' => array( array( array( 'field' => 'layout', 'operator' => '==', 'value' => 'reviews-3', ), array( 'field' => 'layout', 'operator' => '==', 'value' => 'reviews-4', ), array( 'field' => 'layout', 'operator' => '==', 'value' => 'reviews-5', ), ), ), ) ) ), ); } return $layouts; } /** * Change post query attributes * * @param array $args Args for post query. * @param array $attributes Block attributes. * @param array $options Block options. */ public function change_query_args( $args, $attributes, $options ) { // Review type. if ( isset( $options['reviewType'] ) && 'all' !== $options['reviewType'] ) { $args['meta_query'] = array( 'relation' => 'OR', array( 'key' => '_abr_review_type', 'value' => $options['reviewType'], ), ); } // Posts count. if ( isset( $options['reviewsPostsCount'] ) && $options['reviewsPostsCount'] ) { $args['posts_per_page'] = $options['reviewsPostsCount']; } return $args; } } new ABR_Reviews_Posts_Block();