569 lines
17 KiB
PHP
569 lines
17 KiB
PHP
<?php
|
|
/**
|
|
* Themotion functions and definitions.
|
|
*
|
|
* @link https://developer.wordpress.org/themes/basics/theme-functions/
|
|
*
|
|
* @package themotion
|
|
*/
|
|
|
|
define( 'THEMOTION_PHP_INCLUDE', get_template_directory() . '/inc' );
|
|
|
|
if ( ! function_exists( 'themotion_setup' ) ) :
|
|
/**
|
|
* Sets up theme defaults and registers support for various WordPress features.
|
|
*
|
|
* Note that this function is hooked into the after_setup_theme hook, which
|
|
* runs before the init hook. The init hook is too late for some features, such
|
|
* as indicating support for post thumbnails.
|
|
*/
|
|
function themotion_setup() {
|
|
/*
|
|
* Make theme available for translation.
|
|
* Translations can be filed in the /languages/ directory.
|
|
* If you're building a theme based on themotion, use a find and replace
|
|
* to change 'themotion' to the name of your theme in all the template files.
|
|
*/
|
|
load_theme_textdomain( 'themotion', get_template_directory() . '/languages' );
|
|
|
|
// Add default posts and comments RSS feed links to head.
|
|
add_theme_support( 'automatic-feed-links' );
|
|
|
|
/*
|
|
* Let WordPress manage the document title.
|
|
* By adding theme support, we declare that this theme does not use a
|
|
* hard-coded <title> tag in the document head, and expect WordPress to
|
|
* provide it for us.
|
|
*/
|
|
add_theme_support( 'title-tag' );
|
|
|
|
/*
|
|
* Enable support for Post Thumbnails on posts and pages.
|
|
*
|
|
* @link https://developer.wordpress.org/themes/functionality/featured-images-post-thumbnails/
|
|
*/
|
|
add_theme_support( 'post-thumbnails', array( 'post', 'page', 'product', 'download' ) );
|
|
set_post_thumbnail_size( 1200, 9999 );
|
|
|
|
add_image_size( 'themotion-post-thumbnail', 370, 215, true );
|
|
|
|
add_image_size( 'themotion-thumbnail-no-crop', 345, 200 );
|
|
|
|
add_image_size( 'themotion-playlist-thumbnail', 175, 100, true );
|
|
|
|
add_image_size( 'themotion-thumbnail-blog', 770, 425, true );
|
|
|
|
add_image_size( 'themotion-thumbnail-blog-no-crop', 770, 425 );
|
|
|
|
// This theme uses wp_nav_menu() in one location.
|
|
register_nav_menus( array(
|
|
'primary' => esc_html__( 'Primary', 'themotion' ),
|
|
) );
|
|
|
|
/*
|
|
* Switch default core markup for search form, comment form, and comments
|
|
* to output valid HTML5.
|
|
*/
|
|
add_theme_support( 'html5', array(
|
|
'search-form',
|
|
'comment-form',
|
|
'comment-list',
|
|
'gallery',
|
|
'caption',
|
|
) );
|
|
|
|
/*
|
|
* Enable support for Post Formats.
|
|
* See https://developer.wordpress.org/themes/functionality/post-formats/
|
|
*/
|
|
add_theme_support( 'post-formats', array(
|
|
'video'
|
|
) );
|
|
|
|
// Set up the WordPress core custom background feature.
|
|
add_theme_support( 'custom-background', apply_filters( 'themotion_custom_background_args', array(
|
|
'default-color' => 'ffffff',
|
|
'default-image' => '',
|
|
) ) );
|
|
|
|
// Add theme support for custom logo
|
|
add_theme_support( 'custom-logo', array(
|
|
'height' => 55,
|
|
'width' => 280,
|
|
'flex-width' => true,
|
|
) );
|
|
|
|
add_theme_support( 'woocommerce' );
|
|
|
|
/**
|
|
* WooCommerce
|
|
*
|
|
* Unhook sidebar
|
|
*/
|
|
remove_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10 );
|
|
|
|
/**
|
|
*********** Welcome screen */
|
|
|
|
if ( is_admin() ) {
|
|
require get_template_directory() . '/inc/admin/welcome-screen/welcome-screen.php';
|
|
}
|
|
}
|
|
endif;
|
|
add_action( 'after_setup_theme', 'themotion_setup' );
|
|
|
|
/**
|
|
* Check for static page
|
|
*
|
|
* Checks if the page is static and returns a boolean.
|
|
*/
|
|
function themotion_is_not_static_page() {
|
|
return ('posts' != get_option( 'show_on_front' ));
|
|
}
|
|
/**
|
|
* Content Width
|
|
*
|
|
* Set the content width in pixels, based on the theme's design and stylesheet.
|
|
*
|
|
* Priority 0 to make it available to lower priority callbacks.
|
|
*
|
|
* @global int $content_width
|
|
*/
|
|
function themotion_content_width() {
|
|
$GLOBALS['content_width'] = apply_filters( 'themotion_content_width', 640 );
|
|
}
|
|
add_action( 'after_setup_theme', 'themotion_content_width', 0 );
|
|
|
|
/**
|
|
* Register widget area.
|
|
*
|
|
* @link https://developer.wordpress.org/themes/functionality/sidebars/#registering-a-sidebar
|
|
*/
|
|
function themotion_widgets_init() {
|
|
register_sidebar( array(
|
|
'name' => esc_html__( 'Sidebar', 'themotion' ),
|
|
'id' => 'sidebar-1',
|
|
'description' => esc_html__( 'Add widgets here.', 'themotion' ),
|
|
'before_widget' => '<section id="%1$s" class="widget %2$s">',
|
|
'after_widget' => '</section>',
|
|
'before_title' => '<h2 class="widget-title">',
|
|
'after_title' => '</h2>',
|
|
) );
|
|
|
|
register_sidebar( array(
|
|
'name' => esc_html__( 'Footer Single Widget Area', 'themotion' ),
|
|
'id' => 'footer-widget-area',
|
|
'description' => esc_html__( 'Add widgets here.', 'themotion' ),
|
|
'before_widget' => '<section id="%1$s" class="widget %2$s">',
|
|
'after_widget' => '</section>',
|
|
'before_title' => '<h2 class="widget-title">',
|
|
'after_title' => '</h2>',
|
|
) );
|
|
|
|
register_sidebars(3, array(
|
|
'name' => esc_html__( 'Footer Widget Area %d', 'themotion' ),
|
|
'id' => 'footer-area',
|
|
'before_widget' => '<section id="%1$s" class="widget %2$s">',
|
|
'after_widget' => '</section>',
|
|
'before_title' => '<h2 class="widget-title">',
|
|
'after_title' => '</h2>',
|
|
) );
|
|
|
|
}
|
|
add_action( 'widgets_init', 'themotion_widgets_init' );
|
|
|
|
|
|
/**
|
|
* Return the Google font stylesheet URL, if available.
|
|
*
|
|
* The use of Source Sans Pro and Bitter by default is localized. For languages
|
|
* that use characters not supported by the font, the font can be disabled.
|
|
*
|
|
* @since themotion 1.0
|
|
*
|
|
* @return string Font stylesheet or empty string if disabled.
|
|
*/
|
|
function themotion_fonts_url() {
|
|
$fonts_url = '';
|
|
|
|
/*
|
|
Translators: If there are characters in your language that are not
|
|
* supported by Source Sans Pro, translate this to 'off'. Do not translate
|
|
* into your own language.
|
|
*/
|
|
$source_sans_pro = _x( 'on', 'Merriweather font: on or off', 'themotion' );
|
|
|
|
/*
|
|
Translators: If there are characters in your language that are not
|
|
* supported by Bitter, translate this to 'off'. Do not translate into your
|
|
* own language.
|
|
*/
|
|
$bitter = _x( 'on', 'Cabin font: on or off', 'themotion' );
|
|
|
|
if ( 'off' != $source_sans_pro || 'off' != $bitter ) {
|
|
$font_families = array();
|
|
|
|
if ( 'off' != $source_sans_pro ) {
|
|
$font_families[] = 'Merriweather:400';
|
|
}
|
|
|
|
if ( 'off' != $bitter ) {
|
|
$font_families[] = 'Cabin:400,500,600,700';
|
|
}
|
|
|
|
$query_args = array(
|
|
'family' => urlencode( implode( '|', $font_families ) ),
|
|
'subset' => urlencode( 'latin,latin-ext' ),
|
|
);
|
|
$fonts_url = add_query_arg( $query_args, 'https://fonts.googleapis.com/css' );
|
|
}
|
|
|
|
return $fonts_url;
|
|
}
|
|
|
|
/**
|
|
* Registers an editor stylesheet for the theme.
|
|
*/
|
|
function themotion_add_editor_styles() {
|
|
add_editor_style( array( 'css/custom-editor-style.css', themotion_fonts_url() ) );
|
|
}
|
|
add_action( 'admin_init', 'themotion_add_editor_styles' );
|
|
|
|
/**
|
|
* Enqueue scripts and styles.
|
|
*/
|
|
function themotion_scripts() {
|
|
wp_enqueue_style( 'themotion-style', get_stylesheet_uri(), array( 'bootstrap' ) );
|
|
|
|
wp_enqueue_style( 'wp-mediaelement' );
|
|
|
|
wp_enqueue_style( 'bootstrap', get_template_directory_uri() . '/css/vendor/bootstrap.min.css', array(), '3.3.6', 'all' );
|
|
|
|
wp_enqueue_style( 'themotion-fonts', themotion_fonts_url(), array(), null );
|
|
|
|
wp_enqueue_style( 'font-awesome', get_template_directory_uri() . '/css/vendor/font-awesome.min.css', array(), '4.5.0' );
|
|
|
|
wp_enqueue_script( 'themotion-functions-js', get_template_directory_uri() . '/js/functions.js', array(), '1.0.1', true );
|
|
|
|
wp_localize_script( 'themotion-functions-js', 'screenReaderText', array(
|
|
'expand' => '<span class="screen-reader-text">' . esc_html__( 'expand child menu', 'themotion' ) . '</span>',
|
|
'collapse' => '<span class="screen-reader-text">' . esc_html__( 'collapse child menu', 'themotion' ) . '</span>',
|
|
) );
|
|
|
|
wp_enqueue_script( 'bootstrap', get_template_directory_uri() . '/js/vendor/bootstrap.min.js', array( 'jquery' ), '20130115', true );
|
|
|
|
wp_enqueue_script( 'themotion-skip-link-focus-fix', get_template_directory_uri() . '/js/skip-link-focus-fix.js', array(), '20151215', true );
|
|
|
|
if ( get_option( 'thread_comments' ) && is_singular() && comments_open() ) {
|
|
wp_enqueue_script( 'comment-reply' );
|
|
}
|
|
|
|
}
|
|
add_action( 'wp_enqueue_scripts', 'themotion_scripts' );
|
|
|
|
|
|
/**
|
|
* Load customize controls js
|
|
*/
|
|
function themotion_customizer_script() {
|
|
wp_enqueue_script( 'themotion-customizer-script', get_template_directory_uri() . '/js/themotion_customizer.js', array( 'jquery', 'jquery-ui-draggable' ), '1.0.4', true );
|
|
wp_enqueue_style( 'themotion-admin-stylesheet', get_stylesheet_directory_uri() . '/css/admin-style.css','1.0.0' );
|
|
}
|
|
add_action( 'customize_controls_enqueue_scripts', 'themotion_customizer_script' );
|
|
|
|
/**
|
|
* Implement the Custom Header feature.
|
|
*/
|
|
require get_template_directory() . '/inc/custom-header.php';
|
|
|
|
/**
|
|
* Custom template tags for this theme.
|
|
*/
|
|
require get_template_directory() . '/inc/template-tags.php';
|
|
|
|
/**
|
|
* Custom functions that act independently of the theme templates.
|
|
*/
|
|
require get_template_directory() . '/inc/extras.php';
|
|
|
|
/**
|
|
* Customizer additions.
|
|
*/
|
|
require get_template_directory() . '/inc/customizer.php';
|
|
|
|
/**
|
|
* Load Jetpack compatibility file.
|
|
*/
|
|
require get_template_directory() . '/inc/jetpack.php';
|
|
|
|
/**
|
|
* Load homepage sections.
|
|
*/
|
|
require get_template_directory() . '/inc/frontpage-sections.php';
|
|
|
|
if ( ! function_exists( 'themotion_excerpt_more' ) && ! is_admin() ) :
|
|
/**
|
|
* Replaces "[...]" (appended to automatically generated excerpts) with ...
|
|
* and a Continue reading link.
|
|
*
|
|
* @since themotion 1.4
|
|
*
|
|
* @param string $more Default Read More excerpt link.
|
|
* @return string Filtered Read More excerpt link.
|
|
*/
|
|
function themotion_excerpt_more( $more ) {
|
|
$link = sprintf( '<a href="%1$s" class="more-link">%2$s</a>',
|
|
esc_url( get_permalink( get_the_ID() ) ),
|
|
/* translators: %s: Name of current post */
|
|
sprintf( __( 'Continue reading %s <span class="meta-nav">→</span>', 'themotion' ), '<span class="screen-reader-text">' . get_the_title( get_the_ID() ) . '</span>' )
|
|
);
|
|
return ' … ' . $link;
|
|
}
|
|
add_filter( 'excerpt_more', 'themotion_excerpt_more' );
|
|
endif;
|
|
|
|
|
|
/**
|
|
* Adds inline style from customizer
|
|
*
|
|
* @since TheMotion 1.0
|
|
*/
|
|
function themotion_inline_style() {
|
|
$header_image = get_header_image();
|
|
$custom_css = '';
|
|
|
|
if ( ! empty( $header_image ) ) {
|
|
$custom_css .= '
|
|
.home-top-area{
|
|
background-image: url(' . esc_url( $header_image ) . ');
|
|
}';
|
|
}
|
|
|
|
if ( ! themotion_has_three_videos_section() ) {
|
|
$custom_css .= '@media screen and (min-width: 992px){
|
|
.home-top-area {
|
|
padding: 210px 0;
|
|
}}';
|
|
}
|
|
|
|
$themotion_home_b_header_text = get_theme_mod( 'themotion_home_b_header_text', esc_html__( 'A collection of high quality videos focused on putting your business in motion.','themotion' ) );
|
|
$themotion_home_b_button_text = get_theme_mod( 'themotion_home_b_button_text',esc_html__( 'See all videos','themotion' ) );
|
|
|
|
if ( empty( $themotion_home_b_header_text ) && empty( $themotion_home_b_button_text ) && empty( $header_image ) ) {
|
|
$custom_css .= '.home-ribbon-intro {
|
|
margin-top: 0;
|
|
}';
|
|
}
|
|
wp_add_inline_style( 'themotion-style', $custom_css );
|
|
}
|
|
add_action( 'wp_enqueue_scripts', 'themotion_inline_style' );
|
|
|
|
|
|
/**
|
|
* Return the site brand
|
|
*
|
|
* @since TheMotion 1.0
|
|
*/
|
|
function themotion_brand() {
|
|
if ( function_exists( 'the_custom_logo' ) && has_custom_logo() ) {
|
|
the_custom_logo(); ?>
|
|
<div class="header-logo-wrap themotion-only-customizer">
|
|
<?php
|
|
if ( is_front_page() && is_home() ) : ?>
|
|
<h1 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></h1>
|
|
<?php else : ?>
|
|
<p class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></p>
|
|
<?php
|
|
endif;
|
|
|
|
$description = get_bloginfo( 'description', 'display' );
|
|
if ( $description || is_customize_preview() ) : ?>
|
|
<p class="site-description"><?php echo esc_html( $description ); /* WPCS: xss ok. */ ?></p>
|
|
<?php
|
|
endif; ?>
|
|
</div>
|
|
<?php
|
|
} else {
|
|
if ( is_customize_preview() ) { ?>
|
|
<a href="<?php echo esc_url( home_url( '/' ) ); ?>" class="custom-logo-link themotion-only-customizer" title="<?php echo esc_attr( get_bloginfo( 'title' ) ); ?>">
|
|
<img src="">
|
|
</a>
|
|
<?php
|
|
} ?>
|
|
|
|
<div class="header-logo-wrap">
|
|
<?php
|
|
if ( is_front_page() && is_home() ) : ?>
|
|
<h1 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></h1>
|
|
<?php else : ?>
|
|
<p class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></p>
|
|
<?php
|
|
endif;
|
|
|
|
$description = get_bloginfo( 'description', 'display' );
|
|
if ( $description || is_customize_preview() ) : ?>
|
|
<p class="site-description"><?php echo esc_html( $description ); /* WPCS: xss ok. */ ?></p>
|
|
<?php
|
|
endif; ?>
|
|
</div>
|
|
<?php
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Display the search icon
|
|
*
|
|
* @since TheMotion 1.0
|
|
*/
|
|
function themotion_search_icon() {
|
|
$themotion_show_search = get_theme_mod( 'themotion_show_search' ); ?>
|
|
<li <?php echo ( ( ( ! isset( $themotion_show_search ) || ( 1 == $themotion_show_search ) ) && is_customize_preview() ) ? 'class="themotion-only-customizer"' : '' ); ?>>
|
|
<?php
|
|
if ( 1 != $themotion_show_search && is_customize_preview() || ( isset( $themotion_show_search ) ) ) { ?>
|
|
<button type="button" class="search-opt search-toggle">
|
|
</button>
|
|
<div class="header-search">
|
|
<div class="container container-header-search">
|
|
<?php get_search_form(); ?>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
} ?>
|
|
</li>
|
|
<?php
|
|
}
|
|
|
|
|
|
/**
|
|
* Custom Excerpt Length
|
|
*
|
|
* Set the length of the post excerpt.
|
|
*
|
|
* @since TheMotion 1.0
|
|
*/
|
|
function themotion_custom_excerpt_length( $length ) {
|
|
return 35;
|
|
}
|
|
add_filter( 'excerpt_length', 'themotion_custom_excerpt_length', 999 );
|
|
|
|
|
|
/**
|
|
* Define Allowed Files to be included
|
|
*
|
|
* @param array $array all files from /inc folder.
|
|
*
|
|
* @return array
|
|
*/
|
|
function themotion_filter_phpfiles( $array ) {
|
|
return array_merge($array,array(
|
|
'/features/feature-copyright-controls',
|
|
'/features/feature-search-toggle',
|
|
'/features/feature-color-palettes',
|
|
'/features/feature-homepage-b',
|
|
'/features/feature-about-page',
|
|
'/features/feature-calendar-page',
|
|
'/features/feature-services-page',
|
|
'/features/feature-homepage-a-ribbon',
|
|
'/features/feature-footer-content',
|
|
'/features/palette-content',
|
|
'/features/feature-customizer-links',
|
|
'/features/feature-inquiry-1',
|
|
'/features/feature-inquiry-2',
|
|
'/features/feature-inquiry-3',
|
|
));
|
|
}
|
|
add_filter( 'themotion_filter_phpfiles', 'themotion_filter_phpfiles' );
|
|
|
|
/**
|
|
* Auto include features files.
|
|
*/
|
|
function themotion_include_files() {
|
|
$themotion_inc_dir = rtrim( THEMOTION_PHP_INCLUDE, '/' );
|
|
$themotion_allowed_phps = array();
|
|
$themotion_allowed_phps = apply_filters( 'themotion_filter_phpfiles',$themotion_allowed_phps );
|
|
|
|
foreach ( $themotion_allowed_phps as $file ) {
|
|
$themotion_file_to_include = $themotion_inc_dir . $file . '.php';
|
|
if ( file_exists( $themotion_file_to_include ) ) {
|
|
include_once( $themotion_file_to_include );
|
|
}
|
|
}
|
|
}
|
|
|
|
add_action( 'after_setup_theme','themotion_include_files' );
|
|
|
|
/**
|
|
* Checkout page
|
|
* Move the coupon fild and message info after the order table
|
|
**/
|
|
function themotion_coupon_after_order_table_js() {
|
|
wc_enqueue_js( '
|
|
$( $( ".woocommerce-info, .checkout_coupon" ).detach() ).appendTo( "#themotion-checkout-coupon" );
|
|
');
|
|
}
|
|
add_action( 'woocommerce_before_checkout_form', 'themotion_coupon_after_order_table_js' );
|
|
|
|
/**
|
|
* Checkout page
|
|
* Move the coupon fild and message info after the order table
|
|
**/
|
|
function themotion_coupon_after_order_table() {
|
|
echo '<div id="themotion-checkout-coupon"></div><div style="clear:both"></div>';
|
|
}
|
|
add_action( 'woocommerce_checkout_order_review', 'themotion_coupon_after_order_table' );
|
|
|
|
/**
|
|
* Escape Lightbox iFrame
|
|
*
|
|
* Escape the iFrame for embedds.
|
|
*/
|
|
function themotion_escape_lightbox( $input ) {
|
|
|
|
$allowed_tags = array(
|
|
'video' => array(
|
|
'autoplay' => true,
|
|
'controls' => true,
|
|
'height' => true,
|
|
'loop' => true,
|
|
'muted' => true,
|
|
'poster' => true,
|
|
'preload' => true,
|
|
'src' => true,
|
|
'width' => true,
|
|
'class' => true,
|
|
'id' => true,
|
|
'style' => true,
|
|
'title' => true,
|
|
'role' => true,
|
|
),
|
|
'iframe' => array(
|
|
'height' => true,
|
|
'width' => true,
|
|
'name' => true,
|
|
'sandbox' => true,
|
|
'src' => true,
|
|
'srcdoc' => true,
|
|
'class' => true,
|
|
'id' => true,
|
|
'style' => true,
|
|
'title' => true,
|
|
'role' => true,
|
|
'frameborder' => true,
|
|
'webkitallowfullscreen' => true,
|
|
'allowfullscreen' => true,
|
|
),
|
|
'source' => array(
|
|
'type' => true,
|
|
'src' => true,
|
|
'class' => true,
|
|
'id' => true,
|
|
'style' => true,
|
|
'role' => true,
|
|
'title' => true,
|
|
),
|
|
);
|
|
|
|
return wp_kses( $input, $allowed_tags );
|
|
}
|