__( 'Posts', 'fl-builder' ), 'description' => __( 'Display a grid of your WordPress posts.', 'fl-builder' ), 'category' => __( 'Posts', 'fl-builder' ), 'editor_export' => false, 'partial_refresh' => true, 'icon' => 'schedule.svg', )); } /** * Ensure backwards compatibility with old settings * before defaults are merged in. * * @since 2.6.0.1 * @param object $settings A module settings object. * @return object */ public function filter_raw_settings( $settings ) { // Handle columns for the new large breakpoint. if ( ! isset( $settings->post_columns_large ) ) { $settings->post_columns_large = $settings->post_columns; } return $settings; } /** * Ensure backwards compatibility with old settings. * * @since 2.2 * @param object $settings A module settings object. * @param object $helper A settings compatibility helper. * @return object */ public function filter_settings( $settings, $helper ) { // Handle old opacity inputs. $helper->handle_opacity_inputs( $settings, 'bg_opacity', 'bg_color' ); $helper->handle_opacity_inputs( $settings, 'text_bg_opacity', 'text_bg_color' ); // Handle old border inputs. if ( isset( $settings->border_type ) && isset( $settings->border_color ) && isset( $settings->border_size ) ) { $settings->border = array( 'style' => $settings->border_type, 'color' => $settings->border_color, 'width' => array( 'top' => $settings->border_size, 'right' => $settings->border_size, 'bottom' => $settings->border_size, 'left' => $settings->border_size, ), ); unset( $settings->border_type ); unset( $settings->border_color ); unset( $settings->border_size ); } // Handle old title font size. if ( isset( $settings->title_font_size ) ) { $settings->title_typography = array(); $settings->title_typography['font_size'] = array( 'length' => $settings->title_font_size, 'unit' => 'px', ); unset( $settings->title_font_size ); } // Handle old info font size. if ( isset( $settings->info_font_size ) ) { $settings->info_typography = array(); $settings->info_typography['font_size'] = array( 'length' => $settings->info_font_size, 'unit' => 'px', ); unset( $settings->info_font_size ); } // Handle old content font size. if ( isset( $settings->content_font_size ) ) { $settings->content_typography = array(); $settings->content_typography['font_size'] = array( 'length' => $settings->content_font_size, 'unit' => 'px', ); unset( $settings->content_font_size ); } // Handle old button module settings. $helper->filter_child_module_settings( 'button', $settings, array( 'more_btn_3d' => 'three_d', 'more_btn_style' => 'style', 'more_btn_padding' => 'padding', 'more_btn_padding_top' => 'padding_top', 'more_btn_padding_bottom' => 'padding_bottom', 'more_btn_padding_left' => 'padding_left', 'more_btn_padding_right' => 'padding_right', 'more_btn_mobile_align' => 'mobile_align', 'more_btn_align_responsive' => 'align_responsive', 'more_btn_font_size' => 'font_size', 'more_btn_font_size_unit' => 'font_size_unit', 'more_btn_typography' => 'typography', 'more_btn_bg_color' => 'bg_color', 'more_btn_bg_hover_color' => 'bg_hover_color', 'more_btn_bg_opacity' => 'bg_opacity', 'more_btn_bg_hover_opacity' => 'bg_hover_opacity', 'more_btn_border' => 'border', 'more_btn_border_hover_color' => 'border_hover_color', 'more_btn_border_radius' => 'border_radius', 'more_btn_border_size' => 'border_size', ) ); return $settings; } /** * @method enqueue_scripts */ public function enqueue_scripts() { if ( FLBuilderModel::is_builder_active() || 'columns' == $this->settings->layout ) { $this->add_js( 'imagesloaded' ); } if ( FLBuilderModel::is_builder_active() || 'grid' == $this->settings->layout ) { $this->add_js( 'imagesloaded' ); $this->add_js( 'jquery-masonry' ); $this->add_js( 'jquery-throttle' ); } if ( FLBuilderModel::is_builder_active() || 'gallery' == $this->settings->layout ) { $this->add_js( 'fl-gallery-grid' ); } if ( FLBuilderModel::is_builder_active() || 'scroll' == $this->settings->pagination || 'load_more' == $this->settings->pagination ) { $this->add_js( 'jquery-infinitescroll' ); } if ( FLBuilderModel::is_builder_active() || ( in_array( $this->settings->layout, array( 'grid', 'columns' ), true ) && $this->settings->show_comments_grid ) ) { $this->add_css( 'font-awesome-5' ); } // Jetpack sharing has settings to enable sharing on posts, post types and pages. // If pages are disabled then jetpack will still show the share button in this module // but will *not* enqueue its scripts and fonts. // This filter forces jetpack to enqueue the sharing scripts. add_filter( 'sharing_enqueue_scripts', '__return_true' ); } /** * @since 1.10.7 */ public function update( $settings ) { global $wp_rewrite; $wp_rewrite->flush_rules( false ); return $settings; } /** * Returns the slug for the posts layout. * * @since 1.10 * @return string */ public function get_layout_slug() { return 'columns' == $this->settings->layout ? 'grid' : $this->settings->layout; } /** * Renders the CSS class for each post item. * * @since 1.10 * @return void */ public function render_post_class() { $settings = $this->settings; $layout = $this->get_layout_slug(); $show_image = $settings->show_image; $has_thumbnail = has_post_thumbnail(); $has_fallback = ! $has_thumbnail && '' !== $settings->image_fallback && $settings->show_image ? true : false; $classes = array( 'fl-post-' . $layout . '-post' ); if ( $show_image && $has_thumbnail ) { if ( 'feed' == $layout ) { $classes[] = 'fl-post-feed-image-' . $settings->image_position; } if ( 'grid' == $layout ) { $classes[] = 'fl-post-grid-image-' . $settings->grid_image_position; } if ( 'columns' == $settings->layout ) { $classes[] = 'fl-post-columns-post'; } } if ( $show_image && $has_fallback ) { if ( 'feed' == $layout ) { $classes[] = 'fl-post-feed-image-' . $settings->image_position; $classes[] = 'fl-post-feed-image-fallback'; } } if ( in_array( $layout, array( 'grid', 'feed' ) ) ) { $align = empty( $settings->post_align ) ? 'default' : $settings->post_align; $classes[] = 'fl-post-align-' . $align; } if ( '' != $settings->posts_container_class ) { $classes[] = $settings->posts_container_class; } post_class( apply_filters( 'fl_builder_posts_module_classes', $classes, $settings ) ); } /** * Renders the featured image for a post. * * @since 1.10 * @param string|array $position * @return void */ public function render_featured_image( $position = 'above' ) { $settings = $this->settings; $render = false; $position = ! is_array( $position ) ? array( $position ) : $position; $layout = $this->get_layout_slug(); /** * @since 2.2.5 * @see fl_render_featured_image_fallback */ $fallback_image = apply_filters( 'fl_render_featured_image_fallback', $settings->image_fallback, $settings ); $fallback = ! has_post_thumbnail() && '' !== $fallback_image && $settings->show_image ? true : false; if ( ( has_post_thumbnail() || $fallback ) && $settings->show_image ) { if ( 'feed' == $settings->layout && in_array( $settings->image_position, $position ) ) { $render = true; } elseif ( 'columns' == $settings->layout && in_array( $settings->grid_image_position, $position ) ) { $render = true; } elseif ( 'grid' == $settings->layout && in_array( $settings->grid_image_position, $position ) ) { $render = true; } if ( $render ) { if ( $fallback ) { include $this->dir . 'includes/featured-image-fallback.php'; } else { include $this->dir . 'includes/featured-image.php'; } } } } /** * Checks to see if a featured image exists for a position. * * @since 1.10 * @param string|array $position * @return void */ public function has_featured_image( $position = 'above' ) { $settings = $this->settings; $result = false; $position = ! is_array( $position ) ? array( $position ) : $position; if ( ( has_post_thumbnail() && $settings->show_image ) || ( $settings->image_fallback && $settings->show_image ) ) { if ( 'feed' == $settings->layout && in_array( $settings->image_position, $position ) ) { $result = true; } elseif ( 'columns' == $settings->layout && in_array( $settings->grid_image_position, $position ) ) { $result = true; } elseif ( 'grid' == $settings->layout && in_array( $settings->grid_image_position, $position ) ) { $result = true; } } return $result; } /** * Renders the_content for a post. * * @since 1.10 * @return void */ public function render_content() { global $post; if ( ! has_filter( 'the_content', 'wpautop' ) && empty( $this->settings->content_length ) ) { add_filter( 'the_content', 'wpautop' ); } if ( get_post_meta( $post->ID, '_fl_builder_enabled', true ) ) { /** * Replace WP content with our layout data. */ ob_start(); FLBuilder::render_content_by_id( $post->ID ); $post->post_content = ob_get_clean(); $content = get_the_content( null, false, $post ); } else { ob_start(); the_content(); $content = ob_get_clean(); } echo $content; } /** * Renders the_excerpt for a post. * * @since 1.10 * @return void */ public function render_excerpt() { global $post; if ( ! empty( $this->settings->content_length ) ) { add_filter( 'excerpt_length', array( $this, 'set_custom_excerpt_length' ), 9999 ); } FLBuilderLoop::the_excerpt(); if ( ! empty( $this->settings->content_length ) ) { remove_filter( 'excerpt_length', array( $this, 'set_custom_excerpt_length' ), 9999 ); } } /** * Renders 404 Message */ public function render_404() { echo '
'; echo '

' . $this->settings->no_results_message . '

'; if ( $this->settings->show_search ) { get_search_form(); } echo '
'; } /** * Renders the excerpt for a post. * * @since 1.10 * @return void */ public function set_custom_excerpt_length( $length ) { return $this->settings->content_length; } /** * Get the terms for the current post. * * @since 1.10.8 * @return string|null */ public function get_post_terms() { $post_type = get_post_type(); $taxonomies = get_object_taxonomies( $post_type, 'objects' ); $terms_list = array(); $terms_separator = '' . $this->settings->terms_separator . ''; if ( ! $taxonomies || empty( $taxonomies ) ) { return; } foreach ( $taxonomies as $name => $tax ) { if ( ! $tax->hierarchical ) { continue; } $term_list = get_the_term_list( get_the_ID(), $name, '', $terms_separator, '' ); if ( ! empty( $term_list ) ) { $terms_list[] = $term_list; } } if ( count( $terms_list ) > 0 ) { return join( $terms_separator, $terms_list ); } } /** * prints schema if enabled. * @since 2.2.2 */ static public function print_schema( $schema ) { if ( self::schema_enabled() ) { echo $schema; } } /** * Renders the schema itemtype for the collection * * @since 2.2.5 * @return string */ static public function schema_collection_type( $data_source = 'custom_query', $post_type = 'post' ) { $schema = ''; if ( ! self::schema_enabled() ) { return $schema; } if ( is_archive() && 'main_query' === $data_source ) { $schema = is_post_type_archive( 'post' ) ? 'https://schema.org/Blog' : 'https://schema.org/Collection'; } else { $schema = ( FLBuilderUtils::post_type_contains( 'post', $post_type ) ) ? 'https://schema.org/Blog' : 'https://schema.org/Collection'; } return $schema; } /** * Is schema enabled * @since 2.2.2 */ static public function schema_enabled() { /** * Disable all post-grid schema markup * @see fl_post_grid_disable_schema */ if ( false !== apply_filters( 'fl_post_grid_disable_schema', false ) ) { return false; } else { return FLBuilder::is_schema_enabled(); } } /** * Renders the schema structured data for the current * post in the loop. * * @since 1.7.4 * @return void */ static public function schema_meta() { /** * Disable all post-grid schema markup * @see fl_post_grid_disable_schema */ if ( ! self::schema_enabled() ) { return false; } /** * Before schema meta * @see fl_before_schema_meta */ do_action( 'fl_before_schema_meta' ); // General Schema Meta ob_start(); echo ''; echo ''; echo ''; /** * General meta * @see fl_schema_meta_general */ echo apply_filters( 'fl_schema_meta_general', ob_get_clean() ); // Publisher Schema Meta ob_start(); echo '
'; echo ''; // Fetch logo from theme or filter. $image = ''; if ( class_exists( 'FLTheme' ) && 'image' == FLTheme::get_setting( 'fl-logo-type' ) ) { $image = FLTheme::get_setting( 'fl-logo-image' ); } elseif ( has_custom_logo() ) { $custom_logo_id = get_theme_mod( 'custom_logo' ); $logo = wp_get_attachment_image_src( $custom_logo_id, 'full' ); $image = is_array( $logo ) ? $logo[0] : false; } /** * Publisher image url. * @see fl_schema_meta_publisher_image_url */ $image = apply_filters( 'fl_schema_meta_publisher_image_url', $image ); if ( $image ) { echo '
'; echo ''; echo '
'; } echo '
'; /** * Publisher meta. * @see fl_schema_meta_publisher */ echo apply_filters( 'fl_schema_meta_publisher', ob_get_clean() ); // Author Schema Meta ob_start(); echo ''; /** * Author meta. * @see fl_schema_meta_author */ echo apply_filters( 'fl_schema_meta_author', ob_get_clean() ); // Image Schema Meta if ( has_post_thumbnail() ) { $image = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ), 'full' ); if ( is_array( $image ) ) { ob_start(); echo '
'; echo ''; echo ''; echo ''; echo '
'; /** * Image meta. * @see fl_schema_meta_thumbnail */ echo apply_filters( 'fl_schema_meta_thumbnail', ob_get_clean() ); } } // Comment Schema Meta ob_start(); echo '
'; echo ''; echo ''; echo '
'; /** * Comments meta * @see fl_schema_meta_comments */ echo apply_filters( 'fl_schema_meta_comments', ob_get_clean() ); /** * After schema meta. * @see fl_after_schema_meta */ do_action( 'fl_after_schema_meta' ); } /** * Renders the schema itemtype for the current * post in the loop. * * @since 1.7.4 * @return void */ static public function schema_itemtype() { global $post; if ( ! self::schema_enabled() ) { return false; } $schema = 'https://schema.org/BlogPosting'; if ( ! is_object( $post ) || ! isset( $post->post_type ) || 'post' != $post->post_type ) { $schema = 'https://schema.org/CreativeWork'; } return $schema; } /** * Returns an array of settings used to render a button module. * * @since 2.2 * @return array */ public function get_button_settings() { $settings = array( 'align' => 'center', 'link' => '#', 'link_target' => '_self', ); foreach ( $this->settings as $key => $value ) { if ( strstr( $key, 'more_btn_' ) ) { $key = str_replace( 'more_btn_', '', $key ); $settings[ $key ] = $value; } } return $settings; } public function get_posts_container() { return $this->settings->posts_container; } public function get_columns_count( $screen = 'default' ) { $value = $this->settings->{ 'post_columns' . ( 'default' === $screen ? '' : '_' . $screen ) }; if ( '' === $value ) { return 3; } if ( $value < 1 ) { return 3; } return $value; } } /** * Register the module and its form settings. */ FLBuilder::register_module('FLPostGridModule', array( 'layout' => array( 'title' => __( 'Layout', 'fl-builder' ), 'sections' => array( 'general' => array( 'title' => '', 'fields' => array( 'layout' => array( 'type' => 'select', 'label' => __( 'Layout', 'fl-builder' ), 'default' => 'grid', 'options' => array( 'columns' => __( 'Columns', 'fl-builder' ), 'grid' => __( 'Masonry', 'fl-builder' ), 'gallery' => __( 'Gallery', 'fl-builder' ), 'feed' => __( 'List', 'fl-builder' ), ), 'toggle' => array( 'columns' => array( 'sections' => array( 'posts', 'image', 'content', 'terms', 'post_style', 'text_style' ), 'fields' => array( 'match_height', 'post_columns', 'post_spacing', 'post_padding', 'show_author', 'link_author', 'show_comments_grid', 'info_separator' ), ), 'grid' => array( 'sections' => array( 'posts', 'image', 'content', 'terms', 'post_style', 'text_style' ), 'fields' => array( 'match_height', 'post_width', 'post_spacing', 'post_padding', 'show_author', 'link_author', 'show_comments_grid', 'info_separator' ), ), 'gallery' => array( 'sections' => array( 'gallery_general', 'overlay_style', 'icons', 'image' ), ), 'feed' => array( 'sections' => array( 'posts', 'image', 'content', 'terms', 'post_style', 'text_style' ), 'fields' => array( 'feed_post_spacing', 'feed_post_padding', 'show_author', 'link_author', 'show_comments', 'info_separator', 'content_type' ), ), ), ), ), ), 'posts' => array( 'title' => __( 'Posts', 'fl-builder' ), 'fields' => array( 'match_height' => array( 'type' => 'select', 'label' => __( 'Equal Heights', 'fl-builder' ), 'default' => '0', 'options' => array( '1' => __( 'Yes', 'fl-builder' ), '0' => __( 'No', 'fl-builder' ), ), 'responsive' => true, ), 'post_width' => array( 'type' => 'unit', 'label' => __( 'Post Width', 'fl-builder' ), 'default' => '300', 'sanitize' => 'floatval', 'units' => array( 'px' ), 'slider' => array( 'max' => 500, 'step' => 10, ), ), 'post_columns' => array( 'type' => 'unit', 'label' => __( 'Columns', 'fl-builder' ), 'responsive' => array( 'default' => array( 'default' => '3', 'large' => '3', 'medium' => '2', 'responsive' => '1', ), ), ), 'post_spacing' => array( 'type' => 'unit', 'label' => __( 'Post Spacing', 'fl-builder' ), 'default' => '60', 'units' => array( 'px' ), 'slider' => true, 'sanitize' => 'floatval', ), 'feed_post_spacing' => array( 'type' => 'unit', 'label' => __( 'Post Spacing', 'fl-builder' ), 'default' => '40', 'units' => array( 'px' ), 'slider' => true, 'preview' => array( 'type' => 'css', 'selector' => '.fl-post-feed-post', 'property' => 'margin-bottom', 'unit' => 'px', ), ), 'post_padding' => array( 'type' => 'unit', 'label' => __( 'Post Padding', 'fl-builder' ), 'default' => '20', 'units' => array( 'px' ), 'slider' => true, 'preview' => array( 'type' => 'css', 'selector' => '.fl-post-grid-text', 'property' => 'padding', 'unit' => 'px', ), ), 'feed_post_padding' => array( 'type' => 'unit', 'label' => __( 'Post Padding', 'fl-builder' ), 'default' => '0', 'units' => array( 'px' ), 'slider' => true, ), 'posts_container' => array( 'type' => 'select', 'label' => __( 'Posts Element', 'fl-builder' ), 'default' => 'div', 'options' => array( 'div' => '<div>', 'article' => '<article>', 'li' => '<li>', ), 'help' => __( 'Optional. Choose an appropriate HTML5 content sectioning element to use for each post to improve accessibility and machine-readability.', 'fl-builder' ), 'toggle' => array( 'li' => array( 'fields' => array( 'posts_container_ul_class' ), ), ), ), 'posts_container_class' => array( 'type' => 'text', 'label' => __( 'Posts Element Class', 'fl-builder' ), 'default' => '', 'connections' => array( 'string' ), ), 'posts_container_ul_class' => array( 'type' => 'text', 'label' => __( 'Posts Element Class for UL', 'fl-builder' ), 'default' => '', ), 'posts_title_tag' => array( 'type' => 'select', 'label' => __( 'Posts Title Tag', 'fl-builder' ), 'default' => 'h2', 'options' => array( 'h1' => '<h1>', 'h2' => '<h2>', 'h3' => '<h3>', 'h4' => '<h4>', 'h5' => '<h5>', 'h6' => '<h6>', ), 'help' => __( 'Optional. Choose an appropriate Heading Tag for each Post Title.', 'fl-builder' ), ), ), ), 'image' => array( 'title' => __( 'Featured Image', 'fl-builder' ), 'fields' => array( 'show_image' => array( 'type' => 'select', 'label' => __( 'Image', 'fl-builder' ), 'default' => '1', 'options' => array( '1' => __( 'Show', 'fl-builder' ), '0' => __( 'Hide', 'fl-builder' ), ), ), 'grid_image_position' => array( 'type' => 'select', 'label' => __( 'Image Position', 'fl-builder' ), 'default' => 'above-title', 'options' => array( 'above-title' => __( 'Above Title', 'fl-builder' ), 'above' => __( 'Above Content', 'fl-builder' ), ), ), 'image_position' => array( 'type' => 'select', 'label' => __( 'Image Position', 'fl-builder' ), 'default' => 'above', 'options' => array( 'above-title' => __( 'Above Title', 'fl-builder' ), 'above' => __( 'Above Content', 'fl-builder' ), 'beside' => __( 'Left', 'fl-builder' ), 'beside-content' => __( 'Left Content', 'fl-builder' ), 'beside-right' => __( 'Right', 'fl-builder' ), 'beside-content-right' => __( 'Right Content', 'fl-builder' ), ), 'toggle' => array( 'beside' => array( 'fields' => array( 'image_width' ), ), 'beside-content' => array( 'fields' => array( 'image_width' ), ), 'beside-right' => array( 'fields' => array( 'image_width' ), ), 'beside-content-right' => array( 'fields' => array( 'image_width' ), ), ), ), 'image_size' => array( 'type' => 'photo-sizes', 'label' => __( 'Image Size', 'fl-builder' ), 'default' => 'medium', ), 'grid_image_spacing' => array( 'type' => 'unit', 'label' => __( 'Image Spacing', 'fl-builder' ), 'default' => '0', 'units' => array( 'px' ), 'slider' => true, ), 'image_spacing' => array( 'type' => 'unit', 'label' => __( 'Image Spacing', 'fl-builder' ), 'default' => '0', 'units' => array( 'px' ), 'slider' => true, ), 'image_width' => array( 'type' => 'unit', 'label' => __( 'Image Width', 'fl-builder' ), 'default' => '33', 'sanitize' => 'floatval', 'units' => array( '%' ), 'slider' => true, ), 'image_fallback' => array( 'default' => '', 'type' => 'photo', 'show_remove' => true, 'label' => __( 'Fallback Image', 'fl-builder' ), ), ), ), 'info' => array( 'title' => __( 'Post Info', 'fl-builder' ), 'fields' => array( 'show_author' => array( 'type' => 'select', 'label' => __( 'Author', 'fl-builder' ), 'default' => '1', 'options' => array( '1' => __( 'Show', 'fl-builder' ), '0' => __( 'Hide', 'fl-builder' ), ), 'toggle' => array( '1' => array( 'fields' => array( 'link_author' ), ), ), ), 'link_author' => array( 'type' => 'select', 'label' => __( 'Enable Author Link', 'fl-builder' ), 'default' => '1', 'options' => array( '1' => __( 'Yes', 'fl-builder' ), '0' => __( 'No', 'fl-builder' ), ), ), 'show_date' => array( 'type' => 'select', 'label' => __( 'Date', 'fl-builder' ), 'default' => '1', 'options' => array( '1' => __( 'Show', 'fl-builder' ), '0' => __( 'Hide', 'fl-builder' ), ), 'toggle' => array( '1' => array( 'fields' => array( 'date_format' ), ), ), ), 'date_format' => array( 'type' => 'select', 'label' => __( 'Date Format', 'fl-builder' ), 'default' => 'default', 'options' => array( 'default' => __( 'Default', 'fl-builder' ), 'M j, Y' => gmdate( 'M j, Y' ), 'F j, Y' => gmdate( 'F j, Y' ), 'm/d/Y' => gmdate( 'm/d/Y' ), 'm-d-Y' => gmdate( 'm-d-Y' ), 'd M Y' => gmdate( 'd M Y' ), 'd F Y' => gmdate( 'd F Y' ), 'Y-m-d' => gmdate( 'Y-m-d' ), 'Y/m/d' => gmdate( 'Y/m/d' ), ), ), 'show_comments' => array( 'type' => 'select', 'label' => __( 'Comments', 'fl-builder' ), 'default' => '1', 'options' => array( '1' => __( 'Show', 'fl-builder' ), '0' => __( 'Hide', 'fl-builder' ), ), ), 'show_comments_grid' => array( 'type' => 'select', 'label' => __( 'Comments', 'fl-builder' ), 'default' => '0', 'options' => array( '1' => __( 'Show', 'fl-builder' ), '0' => __( 'Hide', 'fl-builder' ), ), ), 'info_separator' => array( 'type' => 'text', 'label' => __( 'Separator', 'fl-builder' ), 'default' => ' | ', 'size' => '4', 'inline_editor' => false, 'preview' => array( 'type' => 'text', 'selector' => '.fl-sep', ), ), ), ), 'terms' => array( 'title' => __( 'Post Terms', 'fl-builder' ), 'fields' => array( 'show_terms' => array( 'type' => 'select', 'label' => __( 'Terms', 'fl-builder' ), 'default' => '0', 'options' => array( '1' => __( 'Show', 'fl-builder' ), '0' => __( 'Hide', 'fl-builder' ), ), 'toggle' => array( '1' => array( 'fields' => array( 'terms_separator', 'terms_list_label' ), ), ), ), 'terms_list_label' => array( 'type' => 'text', 'label' => __( 'Terms Label', 'fl-builder' ), 'default' => __( 'Posted in ', 'fl-builder' ), 'preview' => array( 'type' => 'text', 'selector' => '.fl-terms-label', ), ), 'terms_separator' => array( 'type' => 'text', 'label' => __( 'Terms Separator', 'fl-builder' ), 'default' => ', ', 'size' => '4', 'inline_editor' => false, 'preview' => array( 'type' => 'text', 'selector' => '.fl-sep-term', ), ), ), ), 'content' => array( 'title' => __( 'Post Content', 'fl-builder' ), 'fields' => array( 'show_content' => array( 'type' => 'select', 'label' => __( 'Content', 'fl-builder' ), 'default' => '1', 'options' => array( '1' => __( 'Show', 'fl-builder' ), '0' => __( 'Hide', 'fl-builder' ), ), ), 'content_type' => array( 'type' => 'select', 'label' => __( 'Content Type', 'fl-builder' ), 'default' => 'excerpt', 'options' => array( 'excerpt' => __( 'Excerpt', 'fl-builder' ), 'full' => __( 'Full Text', 'fl-builder' ), ), 'toggle' => array( 'excerpt' => array( 'fields' => array( 'content_length' ), ), ), ), 'content_length' => array( 'type' => 'unit', 'label' => __( 'Content Length', 'fl-builder' ), 'default' => '', 'units' => array( 'words' ), 'slider' => array( 'min' => 0, 'max' => 1000, 'step' => 1, ), ), 'show_more_link' => array( 'type' => 'select', 'label' => __( 'More Link', 'fl-builder' ), 'default' => '0', 'options' => array( '1' => __( 'Show', 'fl-builder' ), '0' => __( 'Hide', 'fl-builder' ), ), 'toggle' => array( '1' => array( 'fields' => array( 'more_link_text' ), ), ), ), 'more_link_text' => array( 'type' => 'text', 'label' => __( 'More Link Text', 'fl-builder' ), 'default' => __( 'Read More', 'fl-builder' ), ), ), ), ), ), 'style' => array( 'title' => __( 'Style', 'fl-builder' ), 'sections' => array( 'post_style' => array( 'title' => __( 'Posts', 'fl-builder' ), 'fields' => array( 'post_align' => array( 'type' => 'align', 'label' => __( 'Post Alignment', 'fl-builder' ), 'default' => '', 'preview' => array( 'type' => 'css', 'property' => 'text-align', 'selector' => '.fl-post-grid-post, .fl-post-feed-post', ), ), 'bg_color' => array( 'type' => 'color', 'connections' => array( 'color' ), 'label' => __( 'Post Background Color', 'fl-builder' ), 'show_reset' => true, 'show_alpha' => true, 'preview' => array( 'type' => 'css', 'selector' => '.fl-post-feed-post, .fl-post-grid-post', 'property' => 'background-color', ), ), 'border' => array( 'type' => 'border', 'label' => __( 'Border', 'fl-builder' ), 'responsive' => true, 'preview' => array( 'type' => 'css', 'selector' => '.fl-post-feed-post, .fl-post-grid-post', ), ), ), ), 'text_style' => array( 'title' => __( 'Text', 'fl-builder' ), 'fields' => array( 'title_color' => array( 'type' => 'color', 'connections' => array( 'color' ), 'label' => __( 'Title Color', 'fl-builder' ), 'show_reset' => true, 'show_alpha' => true, 'preview' => array( 'type' => 'css', 'selector' => '.fl-post-feed-title a, .fl-post-grid-title a', 'property' => 'color', ), ), 'title_typography' => array( 'type' => 'typography', 'label' => __( 'Title Typography', 'fl-builder' ), 'responsive' => true, 'preview' => array( 'type' => 'css', 'selector' => '.fl-post-feed-title, .fl-post-grid-title', 'important' => true, ), ), 'info_color' => array( 'type' => 'color', 'connections' => array( 'color' ), 'label' => __( 'Post Info Color', 'fl-builder' ), 'show_reset' => true, 'show_alpha' => true, 'preview' => array( 'type' => 'css', 'selector' => '{node} .fl-post-feed .fl-post-feed-header .fl-post-feed-meta, {node} .fl-post-feed .fl-post-feed-header .fl-post-feed-meta span, {node} .fl-post-feed .fl-post-feed-header .fl-post-feed-meta a, {node} .fl-post-feed .fl-post-feed-header .fl-post-feed-meta-terms span, {node} .fl-post-feed .fl-post-feed-header .fl-post-feed-meta-terms a, {node} .fl-post-grid-meta, {node} .fl-post-grid-meta span, {node} .fl-post-grid-meta a, {node} .fl-post-grid-meta-terms span, {node} .fl-post-grid-meta-terms a', 'property' => 'color', 'important' => true, ), ), 'info_typography' => array( 'type' => 'typography', 'label' => __( 'Post Info Typography', 'fl-builder' ), 'responsive' => true, 'preview' => array( 'type' => 'css', 'selector' => '.fl-post-feed-meta, .fl-post-feed-meta a, .fl-post-grid-meta, .fl-post-grid-meta a', 'important' => true, ), ), 'content_color' => array( 'type' => 'color', 'connections' => array( 'color' ), 'label' => __( 'Content Color', 'fl-builder' ), 'show_reset' => true, 'show_alpha' => true, 'preview' => array( 'type' => 'css', 'selector' => '{node} .fl-post-feed-content, {node} .fl-post-feed-content p, {node} .fl-post-feed-content a, {node} .fl-post-grid-content, {node} .fl-post-grid-content p, {node} .fl-post-grid-content a, {node} .fl-builder-pagination ul.page-numbers li span, {node} .fl-builder-pagination ul.page-numbers li a', 'property' => 'color', 'important' => true, ), ), 'content_typography' => array( 'type' => 'typography', 'label' => __( 'Content Typography', 'fl-builder' ), 'responsive' => true, 'preview' => array( 'type' => 'css', 'selector' => '.fl-post-feed-content, .fl-post-feed-content p, .fl-post-grid-content, .fl-post-grid-content p', 'important' => true, ), ), 'link_color' => array( 'type' => 'color', 'connections' => array( 'color' ), 'label' => __( 'Link Color', 'fl-builder' ), 'show_reset' => true, 'show_alpha' => true, 'preview' => array( 'type' => 'css', 'selector' => '.fl-post-feed-content a, .fl-post-grid-content a', 'property' => 'color', ), ), 'link_hover_color' => array( 'type' => 'color', 'connections' => array( 'color' ), 'label' => __( 'Link Hover Color', 'fl-builder' ), 'show_reset' => true, 'show_alpha' => true, 'preview' => array( 'type' => 'css', 'selector' => '.fl-post-feed-content a:hover, .fl-post-grid-content a:hover', 'property' => 'color', ), ), ), ), 'gallery_general' => array( 'title' => '', 'fields' => array( 'hover_transition' => array( 'type' => 'select', 'label' => __( 'Hover Transition', 'fl-builder' ), 'default' => 'fade', 'options' => array( 'fade' => __( 'Fade', 'fl-builder' ), 'slide-up' => __( 'Slide Up', 'fl-builder' ), 'slide-down' => __( 'Slide Down', 'fl-builder' ), 'scale-up' => __( 'Scale Up', 'fl-builder' ), 'scale-down' => __( 'Scale Down', 'fl-builder' ), ), ), ), ), 'overlay_style' => array( 'title' => __( 'Overlay Colors', 'fl-builder' ), 'fields' => array( 'text_color' => array( 'type' => 'color', 'connections' => array( 'color' ), 'label' => __( 'Overlay Text Color', 'fl-builder' ), 'default' => 'ffffff', 'show_reset' => true, 'show_alpha' => true, 'preview' => array( 'type' => 'css', 'selector' => '.fl-post-gallery-link, .fl-post-gallery-link .fl-post-gallery-title', 'property' => 'color', ), ), 'text_bg_color' => array( 'type' => 'color', 'connections' => array( 'color' ), 'label' => __( 'Overlay Background Color', 'fl-builder' ), 'default' => '333333', 'help' => __( 'The color applies to the overlay behind text over the background selections.', 'fl-builder' ), 'show_reset' => true, 'show_alpha' => true, 'preview' => array( 'type' => 'css', 'selector' => '.fl-post-gallery-text-wrap', 'property' => 'background-color', ), ), ), ), 'icons' => array( 'title' => __( 'Icons', 'fl-builder' ), 'fields' => array( 'has_icon' => array( 'type' => 'select', 'label' => __( 'Use Icon for Posts', 'fl-builder' ), 'default' => 'no', 'options' => array( 'yes' => __( 'Yes', 'fl-builder' ), 'no' => __( 'No', 'fl-builder' ), ), 'toggle' => array( 'yes' => array( 'fields' => array( 'icon', 'icon_position', 'icon_color', 'icon_size' ), ), ), ), 'icon' => array( 'type' => 'icon', 'label' => __( 'Post Icon', 'fl-builder' ), ), 'duo_color1' => array( 'label' => __( 'DuoTone Icon Primary Color', 'fl-builder' ), 'type' => 'color', 'default' => '', 'show_reset' => true, 'preview' => array( 'type' => 'css', 'selector' => '.fl-accordion-button-icon i.fad:before', 'property' => 'color', 'important' => true, ), ), 'duo_color2' => array( 'label' => __( 'DuoTone Icon Secondary Color', 'fl-builder' ), 'type' => 'color', 'default' => '', 'show_reset' => true, 'preview' => array( 'type' => 'css', 'selector' => '.fl-accordion-button-icon i.fad:after', 'property' => 'color', 'important' => true, ), ), 'icon_position' => array( 'type' => 'select', 'label' => __( 'Post Icon Position', 'fl-builder' ), 'default' => 'above', 'options' => array( 'above' => __( 'Above Text', 'fl-builder' ), 'below' => __( 'Below Text', 'fl-builder' ), ), ), 'icon_color' => array( 'type' => 'color', 'connections' => array( 'color' ), 'label' => __( 'Post Icon Color', 'fl-builder' ), 'show_reset' => true, 'show_alpha' => true, 'preview' => array( 'type' => 'css', 'selector' => '.fl-post-gallery .fl-gallery-icon i, .fl-post-gallery .fl-gallery-icon i:before', 'property' => 'color', ), ), 'icon_size' => array( 'type' => 'unit', 'label' => __( 'Post Icon Size', 'fl-builder' ), 'default' => '24', 'units' => array( 'px' ), 'slider' => true, ), ), ), ), ), 'content' => array( 'title' => __( 'Content', 'fl-builder' ), 'file' => FL_BUILDER_DIR . 'includes/loop-settings.php', ), 'pagination' => array( 'title' => __( 'Pagination', 'fl-builder' ), 'sections' => array( 'pagination' => array( 'title' => __( 'Pagination', 'fl-builder' ), 'fields' => array( 'pagination' => array( 'type' => 'select', 'label' => __( 'Pagination Style', 'fl-builder' ), 'default' => 'numbers', 'options' => array( 'numbers' => __( 'Numbers', 'fl-builder' ), 'scroll' => __( 'Scroll', 'fl-builder' ), 'load_more' => __( 'Load More Button', 'fl-builder' ), 'none' => _x( 'None', 'Pagination style.', 'fl-builder' ), ), 'toggle' => array( 'load_more' => array( 'sections' => array( 'more_btn_general', 'more_btn_icon', 'more_btn_style', 'more_btn_text', 'more_btn_colors', 'more_btn_border', 'more_btn_loading' ), ), ), ), 'posts_per_page' => array( 'type' => 'text', 'label' => __( 'Posts Per Page', 'fl-builder' ), 'default' => '10', 'size' => '4', ), 'no_results_message' => array( 'type' => 'textarea', 'label' => __( 'No Results Message', 'fl-builder' ), 'default' => __( "Sorry, we couldn't find any posts. Please try a different search.", 'fl-builder' ), 'rows' => 6, ), 'show_search' => array( 'type' => 'select', 'label' => __( 'Show Search', 'fl-builder' ), 'default' => '1', 'options' => array( '1' => __( 'Show', 'fl-builder' ), '0' => __( 'Hide', 'fl-builder' ), ), 'help' => __( 'Shows the search form if no posts are found.', 'fl-builder' ), ), ), ), 'more_btn_general' => array( 'title' => __( 'Load More Button', 'fl-builder' ), 'fields' => array( 'more_btn_text' => array( 'type' => 'text', 'label' => __( 'Button Text', 'fl-builder' ), 'default' => __( 'Load More', 'fl-builder' ), ), 'more_btn_loading' => array( 'type' => 'text', 'label' => __( 'Loading text', 'fl-builder' ), 'default' => '', 'placeholder' => __( 'Loading...', 'fl-builder' ), ), ), ), 'more_btn_icon' => array( 'title' => __( 'Button Icon', 'fl-builder' ), 'fields' => array( 'more_btn_icon' => array( 'type' => 'icon', 'label' => __( 'Button Icon', 'fl-builder' ), 'show_remove' => true, 'show' => array( 'fields' => array( 'more_btn_icon_position', 'more_btn_icon_animation' ), ), ), 'more_btn_icon_position' => array( 'type' => 'select', 'label' => __( 'Button Icon Position', 'fl-builder' ), 'default' => 'before', 'options' => array( 'before' => __( 'Before Text', 'fl-builder' ), 'after' => __( 'After Text', 'fl-builder' ), ), ), 'more_btn_icon_animation' => array( 'type' => 'select', 'label' => __( 'Button Icon Visibility', 'fl-builder' ), 'default' => 'disable', 'options' => array( 'disable' => __( 'Always Visible', 'fl-builder' ), 'enable' => __( 'Fade In On Hover', 'fl-builder' ), ), ), ), ), 'more_btn_style' => array( 'title' => __( 'Button Style', 'fl-builder' ), 'fields' => array( 'more_btn_width' => array( 'type' => 'select', 'label' => __( 'Button Width', 'fl-builder' ), 'default' => 'auto', 'options' => array( 'auto' => _x( 'Auto', 'Width.', 'fl-builder' ), 'full' => __( 'Full Width', 'fl-builder' ), ), ), 'more_btn_padding' => array( 'type' => 'dimension', 'label' => __( 'Button Padding', 'fl-builder' ), 'responsive' => true, 'slider' => true, 'units' => array( 'px' ), 'preview' => array( 'type' => 'css', 'selector' => 'a.fl-button', 'property' => 'padding', ), ), ), ), 'more_btn_text' => array( 'title' => __( 'Button Text', 'fl-builder' ), 'fields' => array( 'more_btn_text_color' => array( 'type' => 'color', 'connections' => array( 'color' ), 'label' => __( 'Button Text Color', 'fl-builder' ), 'default' => '', 'show_reset' => true, 'show_alpha' => true, 'preview' => array( 'type' => 'css', 'selector' => 'a.fl-button, a.fl-button *', 'property' => 'color', 'important' => true, ), ), 'more_btn_text_hover_color' => array( 'type' => 'color', 'connections' => array( 'color' ), 'label' => __( 'Button Text Hover Color', 'fl-builder' ), 'default' => '', 'show_reset' => true, 'show_alpha' => true, 'preview' => array( 'type' => 'css', 'selector' => 'a.fl-button:hover, a.fl-button:hover *, a.fl-button:focus, a.fl-button:focus *', 'property' => 'color', 'important' => true, ), ), 'more_btn_typography' => array( 'type' => 'typography', 'label' => __( 'Button Typography', 'fl-builder' ), 'responsive' => true, 'preview' => array( 'type' => 'css', 'selector' => 'a.fl-button', ), ), ), ), 'more_btn_colors' => array( 'title' => __( 'Button Background', 'fl-builder' ), 'fields' => array( 'more_btn_bg_color' => array( 'type' => 'color', 'connections' => array( 'color' ), 'label' => __( 'Button Background Color', 'fl-builder' ), 'default' => '', 'show_reset' => true, 'show_alpha' => true, 'preview' => array( 'type' => 'none', ), ), 'more_btn_bg_hover_color' => array( 'type' => 'color', 'connections' => array( 'color' ), 'label' => __( 'Button Background Hover Color', 'fl-builder' ), 'default' => '', 'show_reset' => true, 'show_alpha' => true, 'preview' => array( 'type' => 'none', ), ), 'more_btn_style' => array( 'type' => 'select', 'label' => __( 'Button Background Style', 'fl-builder' ), 'default' => 'flat', 'options' => array( 'flat' => __( 'Flat', 'fl-builder' ), 'gradient' => __( 'Gradient', 'fl-builder' ), ), ), 'more_btn_button_transition' => array( 'type' => 'select', 'label' => __( 'Button Background Animation', 'fl-builder' ), 'default' => 'disable', 'options' => array( 'disable' => __( 'Disabled', 'fl-builder' ), 'enable' => __( 'Enabled', 'fl-builder' ), ), 'preview' => array( 'type' => 'none', ), ), ), ), 'more_btn_border' => array( 'title' => __( 'Button Border', 'fl-builder' ), 'fields' => array( 'more_btn_border' => array( 'type' => 'border', 'label' => __( 'Button Border', 'fl-builder' ), 'responsive' => true, 'preview' => array( 'type' => 'css', 'selector' => 'a.fl-button', 'important' => true, ), ), 'more_btn_border_hover_color' => array( 'type' => 'color', 'connections' => array( 'color' ), 'label' => __( 'Button Border Hover Color', 'fl-builder' ), 'default' => '', 'show_reset' => true, 'show_alpha' => true, 'preview' => array( 'type' => 'none', ), ), ), ), ), ), )); // custom field filter form include FL_BUILDER_DIR . 'includes/loop-settings-filter.php';