BIHomeWP/wp-content/themes/ekko/core/init.php
2020-02-13 10:39:37 +07:00

503 lines
18 KiB
PHP

<?php
// ------------------------------------------------------------------------
// Add Redux Framework & extras
// ------------------------------------------------------------------------
$redux_ThemeTek = get_option( 'redux_ThemeTek' );
define( 'KEYDESIGN_THEME_PATH', get_template_directory() );
define( 'KEYDESIGN_THEME_PLUGINS_DIR', KEYDESIGN_THEME_PATH . '/core/plugins' );
// ------------------------------------------------------------------------
// Theme includes
// ------------------------------------------------------------------------
// Wordpress Bootstrap Menu
require_once( get_template_directory() . '/core/assets/extra/wp_bootstrap_navwalker.php');
// ------------------------------------------------------------------------
// WooCommerce
// ------------------------------------------------------------------------
if( class_exists( 'WooCommerce' )) {
add_theme_support( 'woocommerce', array(
'thumbnail_image_width' => 800,
'gallery_thumbnail_image_width' => 800,
'single_image_width' => 800,
) );
require_once( get_template_directory() . '/core/theme-woocommerce.php' );
}
// ------------------------------------------------------------------------
// Enqueue scripts and styles front and admin
// ------------------------------------------------------------------------
if( !function_exists('keydesign_enqueue_front') ) {
function keydesign_enqueue_front() {
$redux_ThemeTek = get_option( 'redux_ThemeTek' );
// Bootstrap CSS
wp_enqueue_style( 'bootstrap', get_template_directory_uri() . '/core/assets/css/bootstrap.min.css', '', '' );
// Theme main style CSS
wp_enqueue_style( 'keydesign-style', get_stylesheet_uri(), array('bootstrap'), '' );
// Font Awesome
wp_enqueue_style( 'font-awesome', get_template_directory_uri() . '/core/assets/css/font-awesome.min.css', '', '' );
// Iconsmind
wp_enqueue_style( 'keydesign-iconsmind', get_template_directory_uri() . '/core/assets/css/iconsmind.min.css', '', '' );
wp_enqueue_style( 'keydesign-default-fonts', keydesign_default_fonts_url(), array(), '' );
// Bootstrap JS
wp_enqueue_script( 'bootstrap', get_template_directory_uri() . '/core/assets/js/bootstrap.min.js', array('jquery'), '', true );
// Masonry
if( is_front_page() || is_page_template('portfolio.php') ) {
wp_enqueue_script( 'masonry' );
}
if ( function_exists('is_product') ) {
if ( is_product() ) {
wp_enqueue_style( 'photoswipe', get_template_directory_uri() . '/core/assets/css/photoswipe.css', '', '' );
wp_enqueue_style( 'photoswipe-skin', get_template_directory_uri() . '/core/assets/css/photoswipe-default-skin.css', '', '' );
wp_enqueue_script( 'photoswipejs', get_template_directory_uri() . '/core/assets/js/photoswipe.min.js', array('jquery'), '', true );
wp_enqueue_script( 'photoswipejs-ui', get_template_directory_uri() . '/core/assets/js/photoswipe-ui-default.min.js', array('jquery'), '', true );
}
}
// Smooth mouse scrolling
wp_register_script( 'keydesign-smooth-scroll', get_template_directory_uri() . '/core/assets/js/SmoothScroll.js', array('jquery'), '', true );
if ( isset($redux_ThemeTek['tek-smooth-scroll']) && $redux_ThemeTek['tek-smooth-scroll'] != false ) {
wp_enqueue_script( 'keydesign-smooth-scroll' );
}
// Theme main scripts
wp_enqueue_script( 'keydesign-scripts', get_template_directory_uri() . '/core/assets/js/scripts.js', array(), '', true );
// Visual composer - move styles to head
wp_enqueue_style( 'js_composer_front' );
wp_enqueue_style( 'js_composer_custom_css' );
}
}
add_action( 'wp_enqueue_scripts', 'keydesign_enqueue_front' );
// ------------------------------------------------------------------------
// bbPress
// ------------------------------------------------------------------------
function keydesign_bbpress_css_enqueue(){
if( function_exists( 'is_bbpress' ) ) {
// Deregister default bbPress CSS
wp_deregister_style( 'bbp-default' );
$file = 'core/assets/css/bbpress.css';
// Check child theme
if ( file_exists( trailingslashit( get_stylesheet_directory() ) . $file ) ) {
$location = trailingslashit( get_stylesheet_directory_uri() );
$handle = 'bbp-child-bbpress';
// Check parent theme
} elseif ( file_exists( trailingslashit( get_template_directory() ) . $file ) ) {
$location = trailingslashit( get_template_directory_uri() );
$handle = 'bbp-parent-bbpress';
}
// Enqueue the bbPress styling
wp_enqueue_style( $handle, $location . $file, 'screen' );
}
}
add_action( 'wp_enqueue_scripts', 'keydesign_bbpress_css_enqueue' );
function keydesign_default_fonts_url() {
$font_url = add_query_arg( 'family', urlencode( 'Open Sans:300,400,600,700&subset=latin-ext' ), "//fonts.googleapis.com/css" );
return $font_url;
}
if( !function_exists('keydesign_enqueue_admin') ) {
function keydesign_enqueue_admin() {
wp_enqueue_style( 'keydesign-wp-admin-css', get_template_directory_uri() . '/core/assets/css/admin-styles.css', '', '' );
wp_enqueue_script( 'keydesign-wp-admin-js', get_template_directory_uri() . '/core/assets/js/admin-scripts.js', '', '1.0.0' );
}
}
add_action( 'admin_enqueue_scripts', 'keydesign_enqueue_admin' );
// ------------------------------------------------------------------------
// Theme Setup
// ------------------------------------------------------------------------
function keydesign_setup(){
// Localization
load_theme_textdomain( 'ekko', get_template_directory() . '/languages' );
// Add theme support for feed links
add_theme_support( 'automatic-feed-links' );
// Enable support for Post Thumbnails on posts and pages.
add_theme_support( 'post-thumbnails' );
add_image_size( 'keydesign-grid-image', 400, 250, true );
add_image_size( 'keydesign-left-image', 320, 320, true );
// Let WordPress manage the document title.
add_theme_support( 'title-tag' );
// Enable support for page excerpts
add_post_type_support( 'page', 'excerpt' );
// Set up theme navigation locations
if ( function_exists( 'register_nav_menus' ) ) {
register_nav_menus(
array(
'header-menu' => 'Header Menu',
'topbar-menu' => 'Topbar Menu',
'footer-menu' => 'Footer Menu',
)
);
}
// Enable support for Post Formats
add_theme_support( 'post-formats', array(
'gallery',
'video',
'audio',
'quote',
) );
// 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',
) );
}
add_action( 'after_setup_theme', 'keydesign_setup' );
// ------------------------------------------------------------------------
// Include plugin check, meta boxes, widgets, custom posts
// ------------------------------------------------------------------------
// Redux theme options config
include_once( get_template_directory() . '/core/options-init.php' );
// Theme activation and plugin check
include_once( get_template_directory() . '/core/theme-activation.php' );
// Add post meta boxes
include_once( get_template_directory() . '/core/theme-pagemeta.php' );
// Register widgetized areas
include_once( get_template_directory() . '/core/theme-sidebars.php' );
// ------------------------------------------------------------------------
// Content Width
// ------------------------------------------------------------------------
if ( ! isset( $content_width ) ) $content_width = 1240;
// ------------------------------------------------------------------------
// Blog functionality
// ------------------------------------------------------------------------
// Custom blog navigation
function keydesign_link_attributes_1($themetek_output) {
return str_replace('<a href=', '<a class="next" href=', $themetek_output);
}
function keydesign_link_attributes_2($themetek_output) {
return str_replace('<a href=', '<a class="prev" href=', $themetek_output);
}
add_filter('next_post_link', 'keydesign_link_attributes_1');
add_filter('previous_post_link', 'keydesign_link_attributes_2');
// Comment reply script enqueued
function keydesign_enqueue_comments_reply() {
if( get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}
}
add_action( 'comment_form_before', 'keydesign_enqueue_comments_reply' );
// Excerpt length
if( class_exists( 'ReduxFramework' )) {
function keydesign_excerpt_length( $length ) {
$redux_ThemeTek = get_option( 'redux_ThemeTek' );
return $redux_ThemeTek['tek-blog-excerpt'];
}
add_filter( 'excerpt_length', 'keydesign_excerpt_length', 999 );
}
// Post tags
if ( ! function_exists( 'keydesign_output_post_tags' ) ) {
function keydesign_output_post_tags() {
get_template_part( 'core/templates/post/partials/content', 'tags' );
}
}
add_action( 'keydesign_post_after_main_content', 'keydesign_output_post_tags', 10, 0 );
// Post author box
if ( ! function_exists( 'keydesign_output_post_author_box' ) ) {
function keydesign_output_post_author_box() {
$redux_ThemeTek = get_option( 'redux_ThemeTek' );
if (isset($redux_ThemeTek['tek-author-box']) && $redux_ThemeTek['tek-author-box'] == true) {
get_template_part( 'core/templates/post/partials/content', 'author' );
}
}
}
add_action( 'keydesign_post_after_main_content', 'keydesign_output_post_author_box', 20, 0 );
// Post navigation
if ( ! function_exists( 'keydesign_output_post_nav' ) ) {
function keydesign_output_post_nav() {
$redux_ThemeTek = get_option( 'redux_ThemeTek' );
if (isset($redux_ThemeTek['tek-blog-single-nav']) && $redux_ThemeTek['tek-blog-single-nav'] == true) {
get_template_part( 'core/templates/post/partials/content', 'navigation' );
}
}
}
add_action( 'keydesign_post_after_main_content', 'keydesign_output_post_nav', 40, 0 );
// ------------------------------------------------------------------------
// Output Theme Options custom code
// ------------------------------------------------------------------------
function keydesign_vc_custom_colors() {
$redux_ThemeTek = get_option( 'redux_ThemeTek' );
ob_start();
include_once( get_template_directory() . '/core/dynamic-styles.css.php' );
$keydesign_custom_colors = ob_get_clean();
if (class_exists('KEYDESIGN_ADDON_CLASS')) {
wp_add_inline_style('kd-addon-style', $keydesign_custom_colors);
} else {
wp_add_inline_style('keydesign-style', $keydesign_custom_colors);
}
}
add_action('wp_enqueue_scripts', 'keydesign_vc_custom_colors');
function keydesign_custom_theme_styles() {
$redux_ThemeTek = get_option( 'redux_ThemeTek' );
if ( isset($redux_ThemeTek['tek-css']) ) {
if (class_exists('KEYDESIGN_ADDON_CLASS')) {
wp_add_inline_style( 'kd-addon-style', $redux_ThemeTek['tek-css'] );
} else {
wp_add_inline_style( 'keydesign-style', $redux_ThemeTek['tek-css'] );
}
}
}
add_action( 'wp_enqueue_scripts', 'keydesign_custom_theme_styles' );
function keydesign_hook_javascript() {
$redux_ThemeTek = get_option( 'redux_ThemeTek' );
if( ! empty( $redux_ThemeTek['tek-javascript'] ) || isset( $redux_ThemeTek['tek-javascript'] ) ) {
wp_add_inline_script( 'keydesign-scripts', $redux_ThemeTek['tek-javascript'] );
}
}
add_action( 'wp_enqueue_scripts', 'keydesign_hook_javascript' );
// ------------------------------------------------------------------------
// Output Typekit Custom Javascript
// ------------------------------------------------------------------------
function keydesign_custom_typekit() {
$redux_ThemeTek = get_option( 'redux_ThemeTek' );
if ( isset($redux_ThemeTek['tek-typekit']) && $redux_ThemeTek['tek-typekit'] != '' ) {
wp_enqueue_script( 'keydesign-typekit', '//use.typekit.net/'.esc_js($redux_ThemeTek['tek-typekit']).'.js', array(), '1.0' );
wp_add_inline_script( 'keydesign-typekit', 'try{Typekit.load({ async: true });}catch(e){}' );
}
}
add_action('wp_enqueue_scripts', 'keydesign_custom_typekit');
// ------------------------------------------------------------------------
// Theme activation
// ------------------------------------------------------------------------
add_option( 'keydesign-verify', 'no', '', 'yes' );
// ------------------------------------------------------------------------
// Load maintenance page template
// ------------------------------------------------------------------------
add_action( 'template_include', 'keydesign_maintenance_mode', 1 );
function keydesign_maintenance_mode( $template ) {
$redux_ThemeTek = get_option( 'redux_ThemeTek' );
if ( ! class_exists( 'ReduxFramework' ) ) {
return $template;
}
$new_template = locate_template( array( '/core/templates/maintenance-page-template.php' ) );
if ( $redux_ThemeTek['tek-maintenance-mode'] && !is_user_logged_in() ) {
return $new_template;
}
return $template;
}
// ------------------------------------------------------------------------
// Add boxed body class
// ------------------------------------------------------------------------
if (isset($redux_ThemeTek['tek-layout-style'])) {
if ($redux_ThemeTek['tek-layout-style'] == 'boxed') {
add_filter( 'body_class','keydesign_body_class' );
function keydesign_body_class( $classes ) {
$classes[] = 'boxed';
return $classes;
}
}
}
// ------------------------------------------------------------------------
// Preloader effect
// ------------------------------------------------------------------------
if (isset($redux_ThemeTek['tek-preloader'])) {
if ($redux_ThemeTek['tek-preloader'] == true) {
add_filter( 'body_class','keydesign_preloader' );
function keydesign_preloader( $classes ) {
$classes[] = 'loading-effect';
$classes[] = 'fade-in';
return $classes;
}
}
}
// ------------------------------------------------------------------------
// Page transparent navigation
// ------------------------------------------------------------------------
function keydesign_transparent_nav($classes) {
if( class_exists( 'WooCommerce' ) && is_shop() ) {
$post_id = wc_get_page_id( 'shop' );
} else {
$post_id = get_the_ID();
}
$page_transparent_navigation = get_post_meta( $post_id, '_themetek_page_transparent_navbar', true );
if ( !empty($page_transparent_navigation)) {
$classes[] = 'transparent-navigation';
}
return $classes;
}
add_filter('body_class', 'keydesign_transparent_nav');
if (isset($redux_ThemeTek['tek-blog-transparent-nav'])) {
if ($redux_ThemeTek['tek-blog-transparent-nav'] == true) {
add_filter( 'body_class','keydesign_blog_transparent_nav' );
function keydesign_blog_transparent_nav( $classes ) {
$classes[] = '';
if (is_home() || is_search() || is_category() || is_tag() || is_author()) {
$classes[] = 'transparent-navigation';
}
return $classes;
}
}
}
// ------------------------------------------------------------------------
// Replace blog post video structure
// ------------------------------------------------------------------------
if( class_exists( 'KEYDESIGN_ADDON_CLASS' ) ) {
function keydesign_embed_oembed_html($html, $url, $args) {
global $post;
if( false !== strpos( $html, 'youtube.com' ) && has_post_thumbnail() && is_single() ){
$html = '<div class="entry-video"><div class="video-cover">
<div class="background-video-image">'. wp_get_attachment_image(get_post_thumbnail_id(), 'large') .'</div>
<div class="play-video"><span class="fa fa-play"></span></div>'. $html .'</div></div>';
}
return $html;
}
add_filter('embed_oembed_html','keydesign_embed_oembed_html', 10, 3);
}
// ------------------------------------------------------------------------
// Add numeric pagination to blog listing pages
// ------------------------------------------------------------------------
function keydesign_numeric_posts_nav() {
if( is_singular() )
return;
global $wp_query;
/** Stop execution if there's only 1 page */
if( $wp_query->max_num_pages <= 1 )
return;
$paged = get_query_var( 'paged' ) ? absint( get_query_var( 'paged' ) ) : 1;
$max = intval( $wp_query->max_num_pages );
/** Add current page to the array */
if ( $paged >= 1 )
$links[] = $paged;
/** Add the pages around the current page to the array */
if ( $paged >= 3 ) {
$links[] = $paged - 1;
$links[] = $paged - 2;
}
if ( ( $paged + 2 ) <= $max ) {
$links[] = $paged + 2;
$links[] = $paged + 1;
}
echo '<nav class="blog-pagination"><ul class="blog-page-numbers">' . "\n";
/** Previous Post Link */
if ( get_previous_posts_link() )
printf( '<li class="prev-post-link">%s</li>' . "\n", get_previous_posts_link() );
/** Link to first page, plus ellipses if necessary */
if ( ! in_array( 1, $links ) ) {
$class = 1 == $paged ? ' class="active"' : '';
printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( 1 ) ), '1' );
if ( ! in_array( 2, $links ) )
echo '<li>...</li>';
}
/** Link to current page, plus 2 pages in either direction if necessary */
sort( $links );
foreach ( (array) $links as $link ) {
$class = $paged == $link ? ' class="active"' : '';
printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $link ) ), $link );
}
/** Link to last page, plus ellipses if necessary */
if ( ! in_array( $max, $links ) ) {
if ( ! in_array( $max - 1, $links ) )
echo '<li>...</li>' . "\n";
$class = $paged == $max ? ' class="active"' : '';
printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $max ) ), $max );
}
/** Next Post Link */
if ( get_next_posts_link() )
printf( '<li class="next-post-link">%s</li>' . "\n", get_next_posts_link() );
echo '</ul></nav>' . "\n";
}
// ------------------------------------------------------------------------
// Deactivate OCDI on theme activation
// ------------------------------------------------------------------------
add_action('admin_init','keydesign_deactivate_ocdi');
function keydesign_deactivate_ocdi() {
if( class_exists('OCDI_Plugin') ) {
deactivate_plugins('one-click-demo-import/one-click-demo-import.php');
}
}