473 lines
16 KiB
PHP
473 lines
16 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Themotion Theme Customizer.
|
||
|
*
|
||
|
* @package themotion
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Add postMessage support for site title and description for the Theme Customizer.
|
||
|
*
|
||
|
* @param WP_Customize_Manager $wp_customize Theme Customizer object.
|
||
|
*/
|
||
|
function themotion_customize_register( $wp_customize ) {
|
||
|
$wp_customize->get_setting( 'blogname' )->transport = 'postMessage';
|
||
|
$wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage';
|
||
|
$wp_customize->remove_control( 'header_textcolor' );
|
||
|
$wp_customize->remove_control( 'background_color' );
|
||
|
|
||
|
require_once __DIR__ . '/class/themotion-general-control.php';
|
||
|
require_once __DIR__ . '/class/themotion-category-selector.php';
|
||
|
require_once __DIR__ . '/class/themotion-pallete-picker.php';
|
||
|
|
||
|
$wp_customize->get_control( 'display_header_text' )->priority = 2;
|
||
|
$wp_customize->get_control( 'blogname' )->priority = 3;
|
||
|
$wp_customize->get_control( 'blogdescription' )->priority = 4;
|
||
|
$wp_customize->get_control( 'custom_logo' )->priority = 5;
|
||
|
|
||
|
/* Control for social icons */
|
||
|
$wp_customize->add_section( 'themotion_social_media', array(
|
||
|
'title' => esc_html__( 'Social Media Icons', 'themotion' ),
|
||
|
'priority' => 40,
|
||
|
) );
|
||
|
$wp_customize->add_setting( 'themotion_social_icons', array(
|
||
|
'default' => json_encode( array(
|
||
|
array( 'link' => 'facebook.com', 'id' => 'themotion_5702771a213bb' ),
|
||
|
array( 'link' => 'twitter.com', 'id' => 'themotion_57027720213bc' ),
|
||
|
) ),
|
||
|
'transport' => 'postMessage',
|
||
|
'sanitize_callback' => 'themotion_sanitize_repeater',
|
||
|
) );
|
||
|
$wp_customize->add_control( new Themotion_General_Repeater( $wp_customize, 'themotion_social_icons', array(
|
||
|
'label' => esc_html__( 'Add new social icon','themotion' ),
|
||
|
'section' => 'themotion_social_media',
|
||
|
'priority' => 1,
|
||
|
'themotion_link_control' => true,
|
||
|
) ) );
|
||
|
|
||
|
/* Control for hiding social icons on contact page */
|
||
|
|
||
|
$wp_customize->add_setting( 'themotion_contact_hide_socials', array(
|
||
|
'transport' => 'postMessage',
|
||
|
'sanitize_callback' => 'themotion_sanitize_checkbox',
|
||
|
) );
|
||
|
|
||
|
$wp_customize->add_control( 'themotion_contact_hide_socials', array(
|
||
|
'type' => 'checkbox',
|
||
|
'label' => __( 'Hide social icons?','themotion' ),
|
||
|
'description' => __( 'If you check this box, the social icons will disappear from Contact page.','themotion' ),
|
||
|
'section' => 'themotion_contact_cl_settings',
|
||
|
'priority' => 1,
|
||
|
) );
|
||
|
|
||
|
/* === Homepage A settings === */
|
||
|
$wp_customize->add_section( 'themotion_home_a', array(
|
||
|
'title' => esc_html__( 'Home Page Option A', 'themotion' ),
|
||
|
'priority' => 50,
|
||
|
) );
|
||
|
|
||
|
$wp_customize->add_setting( 'themotion_home1_video_category', array(
|
||
|
'default' => 'all',
|
||
|
'transport' => 'postMessage',
|
||
|
'sanitize_callback' => 'themotion_sanitize_category_dropdown',
|
||
|
) );
|
||
|
|
||
|
$wp_customize->add_control( new ThemotionCategorySelector( $wp_customize, 'themotion_home1_video_category', array(
|
||
|
'label' => esc_html__( 'Top Section Post Category', 'themotion' ),
|
||
|
'section' => 'themotion_home_a',
|
||
|
'priority' => 1,
|
||
|
) ) );
|
||
|
|
||
|
$wp_customize->add_setting( 'themotion_home_a_bottom_posts_title', array(
|
||
|
'default' => esc_html__( 'Recently Posted','themotion' ),
|
||
|
'sanitize_callback' => 'themotion_sanitize_text',
|
||
|
'transport' => 'postMessage',
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_control( 'themotion_home_a_bottom_posts_title', array(
|
||
|
'label' => esc_html__( 'Bottom posts title', 'themotion' ),
|
||
|
'section' => 'themotion_home_a',
|
||
|
'priority' => 6,
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_setting( 'themotion_home_a_post_category', array(
|
||
|
'default' => 'all',
|
||
|
'transport' => 'postMessage',
|
||
|
'sanitize_callback' => 'themotion_sanitize_category_dropdown',
|
||
|
) );
|
||
|
|
||
|
$wp_customize->add_control( new ThemotionCategorySelector( $wp_customize, 'themotion_home_a_post_category', array(
|
||
|
'label' => esc_html__( 'Bottom posts category', 'themotion' ),
|
||
|
'section' => 'themotion_home_a',
|
||
|
'priority' => 7,
|
||
|
) ) );
|
||
|
|
||
|
/* === Contact page === */
|
||
|
$wp_customize->add_panel( 'themotion_contact', array(
|
||
|
'priority' => 65,
|
||
|
'capability' => 'edit_theme_options',
|
||
|
'title' => esc_html__( 'Contact page', 'themotion' ),
|
||
|
) );
|
||
|
|
||
|
$wp_customize->add_section( 'themotion_contact_header_settings', array(
|
||
|
'title' => esc_html__( 'Header Settings', 'themotion' ),
|
||
|
'priority' => 1,
|
||
|
'panel' => 'themotion_contact',
|
||
|
) );
|
||
|
|
||
|
/* Header Image */
|
||
|
$wp_customize->add_setting( 'themotion_contact_header_image', array(
|
||
|
'default' => esc_url( get_template_directory_uri() . '/images/contact.jpg' ),
|
||
|
'sanitize_callback' => 'esc_url',
|
||
|
'transport' => 'postMessage',
|
||
|
));
|
||
|
$wp_customize->add_control( new WP_Customize_Image_Control( $wp_customize, 'themotion_contact_header_image', array(
|
||
|
'label' => esc_html__( 'Header Image', 'themotion' ),
|
||
|
'section' => 'themotion_contact_header_settings',
|
||
|
'priority' => 1,
|
||
|
)));
|
||
|
|
||
|
/* Control for header text */
|
||
|
$wp_customize->add_setting( 'themotion_contact_header_text', array(
|
||
|
'default' => esc_html__( 'FEEL FREE TO CONTACT US WITH ANY QUESTIONS OR COMMENTS','themotion' ),
|
||
|
'sanitize_callback' => 'themotion_sanitize_text',
|
||
|
'transport' => 'postMessage',
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_control( 'themotion_contact_header_text', array(
|
||
|
'label' => esc_html__( 'Header text', 'themotion' ),
|
||
|
'section' => 'themotion_contact_header_settings',
|
||
|
'priority' => 2,
|
||
|
));
|
||
|
|
||
|
/* Control for button text*/
|
||
|
$wp_customize->add_setting( 'themotion_contact_button_text', array(
|
||
|
'default' => esc_html__( 'Send us an email','themotion' ),
|
||
|
'sanitize_callback' => 'themotion_sanitize_text',
|
||
|
'transport' => 'postMessage',
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_control( 'themotion_contact_button_text', array(
|
||
|
'label' => esc_html__( 'Button text', 'themotion' ),
|
||
|
'section' => 'themotion_contact_header_settings',
|
||
|
'priority' => 3,
|
||
|
));
|
||
|
|
||
|
/* Latest posts */
|
||
|
$wp_customize->add_section( 'themotion_latest_posts', array(
|
||
|
'title' => esc_html__( 'Latest posts', 'themotion' ),
|
||
|
'priority' => 5,
|
||
|
'panel' => 'themotion_about',
|
||
|
) );
|
||
|
|
||
|
$wp_customize->add_setting( 'themotion_show_latest', array(
|
||
|
'transport' => 'postMessage',
|
||
|
'sanitize_callback' => 'themotion_sanitize_checkbox',
|
||
|
) );
|
||
|
|
||
|
$wp_customize->add_control( 'themotion_show_latest', array(
|
||
|
'type' => 'checkbox',
|
||
|
'label' => __( 'Hide latest posts?','themotion' ),
|
||
|
'description' => __( 'If you check this box, latest posts will disappear from About page.','themotion' ),
|
||
|
'section' => 'themotion_latest_posts',
|
||
|
'priority' => 1,
|
||
|
) );
|
||
|
|
||
|
$wp_customize->add_setting( 'themotion_latest_posts_title', array(
|
||
|
'default' => esc_html__( 'Recently Posted','themotion' ),
|
||
|
'sanitize_callback' => 'themotion_sanitize_text',
|
||
|
'transport' => 'postMessage',
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_control( 'themotion_latest_posts_title', array(
|
||
|
'label' => esc_html__( 'Title', 'themotion' ),
|
||
|
'section' => 'themotion_latest_posts',
|
||
|
'priority' => 2,
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_setting( 'themotion_latest_posts_category', array(
|
||
|
'default' => 'all',
|
||
|
'transport' => 'postMessage',
|
||
|
'sanitize_callback' => 'themotion_sanitize_category_dropdown',
|
||
|
) );
|
||
|
|
||
|
$wp_customize->add_control( new ThemotionCategorySelector( $wp_customize, 'themotion_latest_posts_category', array(
|
||
|
'label' => esc_html__( 'Category', 'themotion' ),
|
||
|
'section' => 'themotion_latest_posts',
|
||
|
'priority' => 3,
|
||
|
) ) );
|
||
|
|
||
|
/* Control for button link*/
|
||
|
$wp_customize->add_setting( 'themotion_contact_button_link', array(
|
||
|
'sanitize_callback' => 'esc_url',
|
||
|
'transport' => 'postMessage',
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_control( 'themotion_contact_button_link', array(
|
||
|
'label' => esc_html__( 'Button URL', 'themotion' ),
|
||
|
'section' => 'themotion_contact_header_settings',
|
||
|
'priority' => 4,
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_section( 'themotion_contact_cl_settings', array(
|
||
|
'title' => esc_html__( 'Content Left Settings', 'themotion' ),
|
||
|
'priority' => 2,
|
||
|
'panel' => 'themotion_contact',
|
||
|
) );
|
||
|
|
||
|
$wp_customize->add_setting( 'themotion_contact_cl_title', array(
|
||
|
'default' => esc_html__( 'WHY THE MOTION','themotion' ),
|
||
|
'sanitize_callback' => 'themotion_sanitize_text',
|
||
|
'transport' => 'postMessage',
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_control( 'themotion_contact_cl_title', array(
|
||
|
'label' => esc_html__( 'Block Title', 'themotion' ),
|
||
|
'section' => 'themotion_contact_cl_settings',
|
||
|
'priority' => 2,
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_setting( 'themotion_contact_cl_text', array(
|
||
|
'default' => esc_html__( 'Using best practices and a keen eye, we curated this video feed for the business beginner and experienced alike. We are a resource for creatives wanting to push their business forward.','themotion' ),
|
||
|
'sanitize_callback' => 'themotion_sanitize_text',
|
||
|
'transport' => 'postMessage',
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_control( 'themotion_contact_cl_text', array(
|
||
|
'label' => esc_html__( 'Text', 'themotion' ),
|
||
|
'type' => 'textarea',
|
||
|
'section' => 'themotion_contact_cl_settings',
|
||
|
'priority' => 3,
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_section( 'themotion_contact_cr_settings', array(
|
||
|
'title' => esc_html__( 'Content Right Settings', 'themotion' ),
|
||
|
'priority' => 3,
|
||
|
'panel' => 'themotion_contact',
|
||
|
) );
|
||
|
|
||
|
$wp_customize->add_setting( 'themotion_contact_cr_title', array(
|
||
|
'default' => esc_html__( 'Get in touch','themotion' ),
|
||
|
'sanitize_callback' => 'themotion_sanitize_text',
|
||
|
'transport' => 'postMessage',
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_control( 'themotion_contact_cr_title', array(
|
||
|
'label' => esc_html__( 'Block Title', 'themotion' ),
|
||
|
'section' => 'themotion_contact_cr_settings',
|
||
|
'priority' => 1,
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_setting( 'themotion_contact_cr_b1_title', array(
|
||
|
'default' => esc_html__( 'The.Motion Headquarters','themotion' ),
|
||
|
'sanitize_callback' => 'themotion_sanitize_text',
|
||
|
'transport' => 'postMessage',
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_control( 'themotion_contact_cr_b1_title', array(
|
||
|
'label' => esc_html__( 'Left side title', 'themotion' ),
|
||
|
'section' => 'themotion_contact_cr_settings',
|
||
|
'priority' => 2,
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_setting( 'themotion_contact_cr_b1_text', array(
|
||
|
'default' => esc_html__( '329 South Street Court - Albany, NY 83741','themotion' ),
|
||
|
'sanitize_callback' => 'themotion_sanitize_text',
|
||
|
'transport' => 'postMessage',
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_control( 'themotion_contact_cr_b1_text', array(
|
||
|
'label' => esc_html__( 'Left side text', 'themotion' ),
|
||
|
'type' => 'textarea',
|
||
|
'section' => 'themotion_contact_cr_settings',
|
||
|
'priority' => 3,
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_setting( 'themotion_contact_cr_b1_email', array(
|
||
|
'default' => esc_html__( 'start@themotion.com','themotion' ),
|
||
|
'sanitize_callback' => 'themotion_sanitize_text',
|
||
|
'transport' => 'postMessage',
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_control( 'themotion_contact_cr_b1_email', array(
|
||
|
'label' => esc_html__( 'Left side email', 'themotion' ),
|
||
|
'section' => 'themotion_contact_cr_settings',
|
||
|
'priority' => 3,
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_setting( 'themotion_contact_cr_b1_phone', array(
|
||
|
'default' => esc_html__( '(432) 203-3321','themotion' ),
|
||
|
'sanitize_callback' => 'themotion_sanitize_text',
|
||
|
'transport' => 'postMessage',
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_control( 'themotion_contact_cr_b1_phone', array(
|
||
|
'label' => esc_html__( 'Left side phone', 'themotion' ),
|
||
|
'section' => 'themotion_contact_cr_settings',
|
||
|
'priority' => 4,
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_setting( 'themotion_contact_cr_b2_title', array(
|
||
|
'default' => esc_html__( 'THE.MOTION VIDEO RECORDING','themotion' ),
|
||
|
'sanitize_callback' => 'themotion_sanitize_text',
|
||
|
'transport' => 'postMessage',
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_control( 'themotion_contact_cr_b2_title', array(
|
||
|
'label' => esc_html__( 'Right side title', 'themotion' ),
|
||
|
'section' => 'themotion_contact_cr_settings',
|
||
|
'priority' => 5,
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_setting( 'themotion_contact_cr_b2_text', array(
|
||
|
'default' => esc_html__( '153 East Fifth Avenue - New York, NY 83741','themotion' ),
|
||
|
'sanitize_callback' => 'themotion_sanitize_text',
|
||
|
'transport' => 'postMessage',
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_control( 'themotion_contact_cr_b2_text', array(
|
||
|
'label' => esc_html__( 'Right side text', 'themotion' ),
|
||
|
'type' => 'textarea',
|
||
|
'section' => 'themotion_contact_cr_settings',
|
||
|
'priority' => 6,
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_setting( 'themotion_contact_cr_b2_email', array(
|
||
|
'default' => esc_html__( 'recording@themotion.com','themotion' ),
|
||
|
'sanitize_callback' => 'themotion_sanitize_text',
|
||
|
'transport' => 'postMessage',
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_control( 'themotion_contact_cr_b2_email', array(
|
||
|
'label' => esc_html__( 'Right side email', 'themotion' ),
|
||
|
'section' => 'themotion_contact_cr_settings',
|
||
|
'priority' => 7,
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_setting( 'themotion_contact_cr_b2_phone', array(
|
||
|
'default' => esc_html__( '(324) 923-8321','themotion' ),
|
||
|
'sanitize_callback' => 'themotion_sanitize_text',
|
||
|
'transport' => 'postMessage',
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_control( 'themotion_contact_cr_b2_phone', array(
|
||
|
'label' => esc_html__( 'Right side phone', 'themotion' ),
|
||
|
'section' => 'themotion_contact_cr_settings',
|
||
|
'priority' => 8,
|
||
|
));
|
||
|
|
||
|
$wp_customize->add_control( 'themotion_contact_cr_b2_phone', array(
|
||
|
'label' => esc_html__( 'Right side phone', 'themotion' ),
|
||
|
'section' => 'themotion_contact_cr_settings',
|
||
|
'priority' => 8,
|
||
|
));
|
||
|
|
||
|
/* === Featured image on single post === */
|
||
|
$wp_customize->add_setting( 'themotion_single_post_featured_image', array(
|
||
|
'default' => 0,
|
||
|
'sanitize_callback' => 'themotion_sanitize_checkbox',
|
||
|
) );
|
||
|
|
||
|
$wp_customize->add_control( 'themotion_single_post_featured_image', array(
|
||
|
'type' => 'checkbox',
|
||
|
'label' => esc_html__( 'Display featured images on single posts', 'themotion' ),
|
||
|
'section' => 'title_tagline',
|
||
|
'priority' => 70,
|
||
|
) );
|
||
|
|
||
|
$wp_customize->get_control( 'header_image' )->section = 'themotion_header_settings';
|
||
|
$wp_customize->get_control( 'header_image' )->priority = 5;
|
||
|
$wp_customize->get_setting( 'header_image' )->transport = 'postMessage';
|
||
|
$wp_customize->get_setting( 'header_image_data' )->transport = 'postMessage';
|
||
|
|
||
|
}
|
||
|
add_action( 'customize_register', 'themotion_customize_register' );
|
||
|
|
||
|
/**
|
||
|
* Checkbox Sanitization
|
||
|
*/
|
||
|
function themotion_sanitize_checkbox( $input ) {
|
||
|
return ( isset( $input ) && true == $input ? true : false );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Number Sanitization
|
||
|
*/
|
||
|
function themotion_sanitize_number( $input ) {
|
||
|
return ( ! empty( $input ) ? (int) $input : '');
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Repeater Sanitization
|
||
|
*/
|
||
|
function themotion_sanitize_repeater( $input ) {
|
||
|
if ( ! empty( $input ) ) {
|
||
|
$input_decoded = json_decode( $input, true );
|
||
|
if ( ! empty( $input_decoded ) ) {
|
||
|
foreach ( $input_decoded as $iconk => $iconv ) {
|
||
|
foreach ( $iconv as $key => $value ) {
|
||
|
if ( 'link' == $key ) {
|
||
|
$input_decoded [ $iconk ][ $key ] = esc_url( $value );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
$result = json_encode( $input_decoded );
|
||
|
return $result;
|
||
|
}
|
||
|
}
|
||
|
return $input;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Category Dropdown Sanitization
|
||
|
*/
|
||
|
function themotion_sanitize_category_dropdown( $input ) {
|
||
|
$cat = get_category_by_slug( $input );
|
||
|
if ( empty( $cat ) ) {
|
||
|
return 'all';
|
||
|
}
|
||
|
return $input;
|
||
|
}
|
||
|
|
||
|
if ( ! function_exists( 'themotion_sanitize_text' ) ) {
|
||
|
/**
|
||
|
* Text Sanitization
|
||
|
*/
|
||
|
function themotion_sanitize_text( $input ) {
|
||
|
return wp_kses_post( force_balance_tags( $input ) );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( ! function_exists( 'themotion_sanitize_iframe' ) ) {
|
||
|
/**
|
||
|
* Iframe Sanitization
|
||
|
*/
|
||
|
function themotion_sanitize_iframe( $input ) {
|
||
|
$allowed_html = array(
|
||
|
'iframe' => array(
|
||
|
'width' => array(),
|
||
|
'height' => array(),
|
||
|
'src' => array(),
|
||
|
'frameborder' => array(),
|
||
|
'allowfullscreen' => array(),
|
||
|
'webkitallowfullscreen' => array(),
|
||
|
'mozallowfullscreen' => array(),
|
||
|
),
|
||
|
);
|
||
|
return htmlentities( wp_kses( $input, $allowed_html ) );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Binds JS handlers to make Theme Customizer preview reload changes asynchronously.
|
||
|
*/
|
||
|
function themotion_customize_preview_js() {
|
||
|
wp_enqueue_script( 'themotion_customizer', get_template_directory_uri() . '/js/customizer.js', array( 'customize-preview' ), '1.0.7', true );
|
||
|
wp_localize_script( 'themotion_customizer', 'requestpost', array(
|
||
|
'ajaxurl' => admin_url( 'admin-ajax.php' ),
|
||
|
));
|
||
|
}
|
||
|
add_action( 'customize_preview_init', 'themotion_customize_preview_js' );
|