ID, '_generate_use_sections', TRUE) : ''; if ( is_home() || is_archive() || is_search() || is_attachment() || is_tax() ) { return $template; } if ( isset( $use_sections['use_sections'] ) && 'true' == $use_sections['use_sections'] ) { $new_template = dirname( __FILE__ ) . '/templates/template.php'; if ( '' != $new_template ) { return $new_template; } } return $template; } } if ( ! function_exists( 'generate_sections_show_excerpt' ) ) { add_filter( 'generate_show_excerpt', 'generate_sections_show_excerpt' ); /** * If Sections is enabled on a post, make sure we use the excerpt field on the blog page */ function generate_sections_show_excerpt( $show_excerpt ) { global $post; $use_sections = ( isset( $post ) ) ? get_post_meta( $post->ID, '_generate_use_sections', TRUE) : ''; if ( isset( $use_sections['use_sections'] ) && 'true' == $use_sections['use_sections'] ) { return true; } return $show_excerpt; } } if ( ! function_exists( 'generate_sections_styles' ) ) { add_action( 'wp_enqueue_scripts', 'generate_sections_styles' ); /** * Enqueue necessary scripts if sections are enabled */ function generate_sections_styles() { global $post; $use_sections = ( isset( $post ) ) ? get_post_meta( $post->ID, '_generate_use_sections', TRUE) : ''; // Bail if we're on a posts page if ( is_home() || is_archive() || is_search() || is_attachment() || is_tax() ) { return; } if ( isset( $use_sections['use_sections'] ) && 'true' == $use_sections['use_sections'] ) { wp_enqueue_style( 'generate-sections-styles', plugin_dir_url( __FILE__ ) . 'css/style.min.css' ); wp_enqueue_script( 'generate-sections-parallax', plugin_dir_url( __FILE__ ) . 'js/parallax.min.js', array(), GENERATE_SECTIONS_VERSION, true ); } } } if ( ! function_exists( 'generate_sections_body_classes' ) ) { add_filter( 'body_class', 'generate_sections_body_classes' ); /** * Add classes to our element when sections are enabled */ function generate_sections_body_classes( $classes ) { global $post; $use_sections = ( isset( $post ) ) ? get_post_meta( $post->ID, '_generate_use_sections', TRUE) : ''; $sidebars = apply_filters( 'generate_sections_sidebars', false ); // Bail if we're on a posts page if ( is_home() || is_archive() || is_search() || is_attachment() || is_tax() ) { return $classes; } if ( isset( $use_sections['use_sections'] ) && 'true' == $use_sections['use_sections'] ) { $classes[] = 'generate-sections-enabled'; } if ( ( isset( $use_sections['use_sections'] ) && 'true' == $use_sections['use_sections'] ) && ! $sidebars ) { $classes[] = 'sections-no-sidebars'; } if ( ( isset( $use_sections['use_sections'] ) && 'true' == $use_sections['use_sections'] ) && $sidebars ) { $classes[] = 'sections-sidebars'; } return $classes; } } if ( ! function_exists( 'generate_sections_add_css' ) ) { add_action( 'wp_enqueue_scripts', 'generate_sections_add_css', 500 ); /** * Create the CSS for our sections */ function generate_sections_add_css() { global $post; $use_sections = ( isset( $post ) ) ? get_post_meta( $post->ID, '_generate_use_sections', TRUE) : ''; if ( ! isset( $use_sections['use_sections'] ) ) { return; } if ( 'true' !== $use_sections['use_sections'] ) { return; } if ( is_home() || is_archive() || is_search() || is_attachment() || is_tax() ) { return; } if ( function_exists( 'generate_spacing_get_defaults' ) ) { $spacing_settings = wp_parse_args( get_option( 'generate_spacing_settings', array() ), generate_spacing_get_defaults() ); $left_padding = $spacing_settings['content_left']; $right_padding = $spacing_settings['content_right']; $mobile_padding_left = ( isset( $spacing_settings[ 'mobile_content_left' ] ) ) ? $spacing_settings[ 'mobile_content_left' ] : 30; $mobile_padding_right = ( isset( $spacing_settings[ 'mobile_content_right' ] ) ) ? $spacing_settings[ 'mobile_content_right' ] : 30; } else { $right_padding = 40; $left_padding = 40; $mobile_padding = 30; } $sections = ( isset( $post ) ) ? get_post_meta( $post->ID, '_generate_sections', TRUE) : ''; // check if the repeater field has rows of data if ( $sections && '' !== $sections ) { $css = '.generate-sections-inside-container {padding-left:' . $left_padding . 'px;padding-right:' . $right_padding . 'px;}'; // loop through the rows of data $i = 0; foreach ( $sections['sections'] as $section ) : $i++; // Get image details $image_id = ( isset( $section['background_image'] ) && '' !== $section['background_image'] ) ? intval( $section['background_image'] ) : ''; $image_url = ( '' !== $image_id ) ? wp_get_attachment_image_src( $image_id, 'full' ) : ''; // Get the padding type $padding_type = apply_filters( 'generate_sections_padding_type','px' ); // If someone has changed the padding type using a filter, use their value if ( 'px' !== $padding_type ) { $top_padding_type = $padding_type; $bottom_padding_type = $padding_type; } else { $top_padding_type = ( isset( $section['top_padding_unit'] ) && '' !== $section['top_padding_unit'] ) ? $section['top_padding_unit'] : $padding_type; $bottom_padding_type = ( isset( $section['bottom_padding_unit'] ) && '' !== $section['bottom_padding_unit'] ) ? $section['bottom_padding_unit'] : $padding_type; } // Default padding top $padding_top = apply_filters( 'generate_sections_default_padding_top','40' ); // Default padding bottom $padding_bottom = apply_filters( 'generate_sections_default_padding_bottom','40' ); $custom_id = ( isset( $section['custom_id'] ) ) ? $section['custom_id'] : ''; $custom_id = ( '' == $custom_id ) ? "generate-section-$i" : $custom_id; // Get the values $background_color = ( isset( $section['background_color'] ) && '' !== $section['background_color'] ) ? 'background-color:' . esc_attr( $section['background_color'] ) . ';' : ''; $background_image = ( ! empty( $image_url[0] ) ) ? 'background-image:url(' . esc_url( $image_url[0] ) . ');' : ''; if ( isset( $section['background_color_overlay'] ) && '' !== $section['background_color_overlay'] ) { if ( '' !== $background_image && '' !== $background_color ) { $background_image = 'background-image:linear-gradient(0deg, ' . $section['background_color'] . ',' . $section['background_color'] . '), url(' . esc_url( $image_url[0] ) . ');'; $background_color = ''; } } $text_color = ( isset( $section['text_color'] ) && '' !== $section['text_color'] ) ? 'color:' . esc_attr( $section['text_color'] ) . ';' : ''; $link_color = ( isset( $section['link_color'] ) && '' !== $section['link_color'] ) ? 'color:' . esc_attr( $section['link_color'] ) . ';' : ''; $link_color_hover = ( isset( $section['link_color_hover'] ) && '' !== $section['link_color_hover'] ) ? 'color:' . esc_attr( $section['link_color_hover'] ) . ';' : ''; $top_padding = ( isset( $section['top_padding'] ) && '' !== $section['top_padding'] ) ? 'padding-top:' . absint( $section['top_padding'] ) . $top_padding_type . ';' : 'padding-top:' . $padding_top . 'px;'; $bottom_padding = ( isset( $section['bottom_padding'] ) && '' !== $section['bottom_padding'] ) ? 'padding-bottom:' . absint( $section['bottom_padding'] ) . $bottom_padding_type . ';' : 'padding-bottom:' . $padding_bottom . 'px;'; // Outer container if ( '' !== $background_color || '' !== $background_image ) { $css .= '#' . $custom_id . '.generate-sections-container{' . $background_color . $background_image . '}'; } // Inner container if ( '' !== $top_padding || '' !== $bottom_padding || '' !== $text_color ) { $css .= '#' . $custom_id . ' .generate-sections-inside-container{' . $top_padding . $bottom_padding . $text_color . '}'; } // Link color if ( '' !== $link_color ) { $css .= '#' . $custom_id . ' a,#generate-section-' . $i . ' a:visited{' . $link_color . '}'; } // Link color hover if ( '' !== $link_color_hover ) { $css .= '#' . $custom_id . ' a:hover{' . $link_color_hover . '}'; } $mobile = generate_premium_get_media_query( 'mobile' ); $css .= '@media ' . esc_attr( $mobile ) . ' {.generate-sections-inside-container {padding-left: ' . $mobile_padding_left . 'px;padding-right: ' . $mobile_padding_right . 'px;}}'; endforeach; // Build CSS wp_add_inline_style( 'generate-style', $css ); } } } if ( ! function_exists( 'generate_sections_filter_admin_init' ) ) { add_action( 'admin_init', 'generate_sections_filter_admin_init' ); /* * Recreate the default filters on the_content * this will make it much easier to output the meta content with proper/expected formatting */ function generate_sections_filter_admin_init() { if ( user_can_richedit() ) { add_filter( 'generate_section_content', 'convert_smilies' ); add_filter( 'generate_section_content', 'convert_chars' ); add_filter( 'generate_section_content', 'wpautop' ); add_filter( 'generate_section_content', 'shortcode_unautop' ); add_filter( 'generate_section_content', 'prepend_attachment' ); } } } if ( ! function_exists( 'generate_sections_filter' ) ) { add_action( 'init', 'generate_sections_filter' ); /* * Recreate the default filters on the_content * this will make it much easier to output the meta content with proper/expected formatting */ function generate_sections_filter() { if ( is_admin() ) { return; } add_filter( 'generate_section_content', 'convert_smilies' ); add_filter( 'generate_section_content', 'convert_chars' ); add_filter( 'generate_section_content', 'wpautop' ); add_filter( 'generate_section_content', 'shortcode_unautop' ); add_filter( 'generate_section_content', 'prepend_attachment' ); add_filter( 'generate_section_content', 'do_shortcode'); add_filter( 'generate_the_section_content', array($GLOBALS['wp_embed'], 'autoembed'), 9 ); } } if ( ! function_exists( 'generate_sections_save_content' ) ) { add_action( 'save_post', 'generate_sections_save_content', 99, 4 ); /* * When we save our post, grab all of the section content and save it as regular content. * * This will prevent content loss/theme lock. */ function generate_sections_save_content( $post_id, $post ) { if ( ! isset( $_POST['_generate_sections_nonce'] ) || ! wp_verify_nonce( $_POST['_generate_sections_nonce'], 'generate_sections_nonce' ) ) { return; } if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) { return; } if ( ! current_user_can('edit_post', $post_id ) ) { return; } // See if we're using sections $use_sections = get_post_meta( $post_id, '_generate_use_sections', true); // Make sure use sections exists and that we're not saving a revision if ( ! isset( $use_sections['use_sections'] ) || wp_is_post_revision( $post_id ) ) { return; } // Return if sections are set to false if ( 'true' !== $use_sections['use_sections'] ) { return; } // Get our sections $sections = get_post_meta( $post_id, '_generate_sections', true ); // Return if there's nothing in our sections if ( ! isset( $sections ) || '' == $sections ) { return; } // Prevent infinite loop remove_action( 'save_post', 'generate_sections_save_content', 99, 4 ); // Let's do some stuff if sections aren't empty if ( '' !== $sections ) { // Set up our content variable $content = ''; // Loop through each section and add our content to the content variable foreach ( $sections['sections'] as $section ) { $content .= ( isset( $section['content'] ) && '' !== $section['content'] ) ? $section['content'] . "\n\n" : ''; } // Now update our post if we have section content if ( '' !== $content ) { $post->post_content = $content; wp_update_post( $post, true ); } } // Re-hook the save_post action add_action('save_post', 'generate_sections_save_content', 99, 4); } }