'header', 'name' => esc_html__( 'Header', 'revision' ), 'template' => array( 'home', 'front_page', 'single', 'page', 'archive' ), ), array( 'slug' => 'hero', 'name' => esc_html__( 'Hero', 'revision' ), 'template' => array( 'home' ), ), array( 'slug' => 'site_content', 'name' => esc_html__( 'Site Content', 'revision' ), 'template' => array( 'home', 'front_page', 'single', 'page', 'archive' ), ), array( 'slug' => 'main', 'name' => esc_html__( 'Main', 'revision' ), 'template' => array( 'home', 'front_page', 'single', 'page', 'archive' ), ), array( 'slug' => 'post', 'name' => esc_html__( 'Post', 'revision' ), 'template' => array( 'single' ), ), array( 'slug' => 'post_content', 'name' => esc_html__( 'Post Content', 'revision' ), 'template' => array( 'single' ), ), array( 'slug' => 'page', 'name' => esc_html__( 'Page', 'revision' ), 'template' => array( 'page' ), ), array( 'slug' => 'page_content', 'name' => esc_html__( 'Page Content', 'revision' ), 'template' => array( 'page' ), ), array( 'slug' => 'author', 'name' => esc_html__( 'Post Author', 'revision' ), 'template' => array( 'single' ), ), array( 'slug' => 'pagination', 'name' => esc_html__( 'Post Pagination', 'revision' ), 'template' => array( 'single' ), ), array( 'slug' => 'comments', 'name' => esc_html__( 'Comments', 'revision' ), 'template' => array( 'single', 'page' ), ), array( 'slug' => 'footer', 'name' => esc_html__( 'Footer', 'revision' ), 'template' => array( 'home', 'front_page', 'single', 'page', 'archive' ), ), ); return apply_filters( 'csco_custom_content_locations', $content ); } /** * Define array of Additional Content Pages */ function csco_get_custom_content_pages() { $pages = array( 'home' => esc_html__( 'Homepage', 'revision' ), 'front_page' => esc_html__( 'Front Page', 'revision' ), 'single' => esc_html__( 'Post', 'revision' ), 'page' => esc_html__( 'Page', 'revision' ), 'archive' => esc_html__( 'Archive', 'revision' ), ); return $pages; } /** * Init Additional Content */ function csco_init_custom_content() { $locations = csco_get_custom_content_locations(); $pages = csco_get_custom_content_pages(); /** * Customizer Settings */ CSCO_Customizer::add_panel( 'custom_content', array( 'title' => esc_html__( 'Additional Content', 'revision' ), 'priority' => 200, ) ); CSCO_Customizer::add_section( 'custom_content_general', array( 'title' => esc_html__( 'General', 'revision' ), 'panel' => 'custom_content', ) ); CSCO_Customizer::add_field( array( 'type' => 'checkbox', 'settings' => 'custom_content_adsense', 'label' => esc_html__( 'Load Google AdSense scripts', 'revision' ), 'description' => esc_html__( 'Enable this if you\'re using Google AdSense.', 'revision' ), 'section' => 'custom_content_general', 'default' => false, ) ); foreach ( $pages as $page_slug => $page_name ) { CSCO_Customizer::add_section( 'custom_content_' . $page_slug, array( 'title' => $page_name, 'panel' => 'custom_content', ) ); foreach ( $locations as $location ) { // Check if ads location is supported by the current page template. if ( in_array( $page_slug, $location['template'], true ) ) { CSCO_Customizer::add_field( array( 'type' => 'textarea', 'settings' => 'custom_content_' . $page_slug . '_' . $location['slug'] . '_before', 'label' => esc_html__( 'Before', 'revision' ) . ' ' . $location['name'], 'section' => 'custom_content_' . $page_slug, 'default' => '', 'sanitize_callback' => 'csco_unsanitize', ) ); CSCO_Customizer::add_field( array( 'type' => 'textarea', 'settings' => 'custom_content_' . $page_slug . '_' . $location['slug'] . '_after', 'label' => esc_html__( 'After', 'revision' ) . ' ' . $location['name'], 'section' => 'custom_content_' . $page_slug, 'default' => '', 'sanitize_callback' => 'csco_unsanitize', ) ); } } } /** * Removes Sanitizing * * @param string $content Initial content. */ function csco_unsanitize( $content ) { return $content; } /** * Load Google AdSense scripts */ function csco_custom_content_enqueue_scripts() { if ( get_theme_mod( 'custom_content_adsense', false ) ) { // Register Google AdSense scripts. wp_register_script( 'csco_adsense', '//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js' ); // Enqueue Google AdSense. wp_enqueue_script( 'csco_adsense' ); } } add_action( 'wp_enqueue_scripts', 'csco_custom_content_enqueue_scripts' ); /** * Actions */ function csco_custom_content_display() { // Get current action name. $current = current_filter(); // Get ads pages. $pages = csco_get_custom_content_pages(); foreach ( $pages as $page_slug => $page_name ) { $location = "is_$page_slug"; // On normal pages only. if ( 'is_page' === $location ) { $location = is_front_page() || is_home() ? null : $location; } if ( $location && function_exists( $location ) && $location() ) { // Get ads locations. $locations = csco_get_custom_content_locations(); // Loop through all locations. foreach ( $locations as $location ) { // Check if ads location is supported by the current page template. if ( in_array( $page_slug, $location['template'], true ) ) { // Before. if ( 'csco_' . $location['slug'] . '_before' === $current ) { $code = get_theme_mod( 'custom_content_' . $page_slug . '_' . $location['slug'] . '_before' ); if ( $code ) { echo '
' . do_blocks( do_shortcode( $code ) ) . '
'; } } // After. if ( 'csco_' . $location['slug'] . '_after' === $current ) { $code = get_theme_mod( 'custom_content_' . $page_slug . '_' . $location['slug'] . '_after' ); if ( $code ) { echo '
' . do_blocks( do_shortcode( $code ) ) . '
'; } } } } } } } foreach ( $locations as $location ) { add_action( 'csco_' . $location['slug'] . '_before', 'csco_custom_content_display', 5 ); add_action( 'csco_' . $location['slug'] . '_after', 'csco_custom_content_display', 999 ); } } add_action( 'init', 'csco_init_custom_content' );