251 lines
6.9 KiB
PHP
251 lines
6.9 KiB
PHP
<?php
|
|
/**
|
|
* Additional Content.
|
|
*
|
|
* @package Revision
|
|
*/
|
|
|
|
/**
|
|
* Define array of Additional Content Locations
|
|
*/
|
|
function csco_get_custom_content_locations() {
|
|
$content = array(
|
|
array(
|
|
'slug' => '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 '<section class="cs-custom-content cs-custom-content-' . esc_html( $location['slug'] ) . '-before">' . do_blocks( do_shortcode( $code ) ) . '</section>';
|
|
}
|
|
}
|
|
// After.
|
|
if ( 'csco_' . $location['slug'] . '_after' === $current ) {
|
|
$code = get_theme_mod( 'custom_content_' . $page_slug . '_' . $location['slug'] . '_after' );
|
|
if ( $code ) {
|
|
echo '<section class="cs-custom-content cs-custom-content-' . esc_html( $location['slug'] ) . '-after">' . do_blocks( do_shortcode( $code ) ) . '</section>';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
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' );
|