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' );
// This theme uses wp_nav_menu() in one location.
register_nav_menus( array(
'main-menu' => esc_html__( 'Primary Menu', 'kepler_theme' ),
'footer-social-menu' => esc_html__( 'Social Menu', 'kepler_theme' )
));
/*
* 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(
'aside',
'image',
'video',
'quote',
'link',
) );
// Set up the WordPress core custom background feature.
add_theme_support( 'custom-background', apply_filters( 'kepler_theme_custom_background_args', array(
'default-color' => 'ffffff',
'default-image' => '',
) ) );
// Add theme support for selective refresh for widgets.
add_theme_support( 'customize-selective-refresh-widgets' );
// Add theme support for Custom Logo.
add_theme_support( 'custom-logo', array(
'width' => 250,
'height' => 250,
'flex-width' => true,
) );
/**
* 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
*/
$GLOBALS['content_width'] = apply_filters( 'kepler_theme_content_width', 640 );
}
endif;
add_action( 'after_setup_theme', 'kepler_theme_setup' );
/**
* Register widget area.
*
* @link https://developer.wordpress.org/themes/functionality/sidebars/#registering-a-sidebar
*/
function kepler_theme_widgets_init() {
register_sidebar( array(
'name' => esc_html__( 'Sidebar', 'kepler_theme' ),
'id' => 'main-sidebar',
'description' => esc_html__( 'Add widgets here.', 'kepler_theme' ),
'before_widget' => '',
'before_title' => '
',
) );
register_sidebar( array(
'name' => esc_html__( 'Mailchimp Widget', 'kepler_theme' ),
'id' => 'kepler_theme-mailchimp-widget-area',
'description' => esc_html__( 'Add widgets here.', 'kepler_theme' ),
'before_widget' => '',
'after_widget' => '
',
'before_title' => '',
'after_title' => '
',
) );
}
add_action( 'widgets_init', 'kepler_theme_widgets_init' );
/**
* Set default image size in post editor to our own custom
* image size and alignment to center
*/
function kepler_theme_custom_image_size() {
update_option( 'image_default_align', 'center' );
update_option( 'large_size_w', 1270 );
update_option( 'large_size_h', 9999 );
update_option( 'large_crop', 0 );
update_option('image_default_size', 'large' );
}
add_action('after_setup_theme', 'kepler_theme_custom_image_size');
/**
* Move comment field to bottom
*/
function kepler_theme_move_comment_field_to_bottom( $fields ) {
$comment_field = $fields['comment'];
unset( $fields['comment'] );
$fields['comment'] = $comment_field;
return $fields;
}
add_filter( 'comment_form_fields', 'kepler_theme_move_comment_field_to_bottom' );
/**
* Enqueue scripts and styles.
*/
function kepler_theme_scripts() {
// Read site options set by kepler plugin
$current_css = get_site_option("kepler_style_kit_css");
$fonts = json_decode(get_site_option("kepler_page_required_fonts"), true);
if(is_array($fonts)){
foreach ($fonts as $obj) {
if($obj["type"] == "google"){
$baseURL = "//fonts.googleapis.com/css?";
}
elseif($obj["type"] == "custom" || $obj["type"] == "kepler"){
$baseURL = "//keplerapis.com/fonts/css/?";
}
else{
continue;
}
$weights ="";
$weights = ":".join(",",$obj["variants"]);
$name = str_replace(' ','-',$obj["name"]);
wp_enqueue_style( $obj["type"].'-fonts-'.$name, $baseURL.'family='.$obj["name"].''.$weights, array());
}
}
/* START_CSS_LOADER */
// if stylekit is set, load that CSS instead of theme's style.css
if($current_css !=""){
wp_enqueue_style( 'kepler_theme-reset', get_template_directory_uri() . '/reset.css' );
wp_enqueue_style( 'kepler_theme', wp_upload_dir()["baseurl"].$current_css );
}
// load theme's style.css. This will be loaded on fresh install, when default stylekit is not modified
else{
//default google fonts
wp_enqueue_style( 'kepler_theme-google-fonts', 'https://fonts.googleapis.com/css?family=IBM+Plex+Mono&display=swap', false );
wp_enqueue_style( 'kepler_theme', get_stylesheet_uri() );
}
/* END_CSS_LOADER */
// Enqueue third party libraries
wp_enqueue_script( 'kepler_theme-lib-js-velocity', get_template_directory_uri() . '/js/lib/velocity.min.js', array('jquery'), '1.0', true );
wp_enqueue_script( 'kepler_theme-lib-js-velocity-ui', get_template_directory_uri() . '/js/lib/velocity.ui.min.js', array('jquery'), '1.0', true );
wp_enqueue_script( 'kepler_theme-lib-js-swiper', get_template_directory_uri() . '/js/lib/swiper.js', array('jquery'), '1.0', true );
wp_enqueue_script( 'kepler_theme-lib-js-googlemaps', 'https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&key='.get_site_option("kepler_google_key"), '', '' );
wp_enqueue_script( 'kepler_theme-lib-js-clamp', get_template_directory_uri() . '/js/lib/clamp.min.js', array('jquery'), '1.0', true );
wp_enqueue_script( 'kepler_theme-lib-js-menuclipper', get_template_directory_uri() . '/js/lib/jquery.menuclipper.js', array('jquery'), '1.0', true );
wp_enqueue_script( 'kepler_theme-lib-js-color-thief', get_template_directory_uri() . '/js/lib/color-thief.min.js', array('jquery'), '1.0', true );
wp_enqueue_script( 'kepler_theme-lib-js-vimeo', get_template_directory_uri() . '/js/lib/vimeo.js', array('jquery'), '1.0', true );
wp_enqueue_script( 'kepler_theme-lib-js-youtube', get_template_directory_uri() . '/js/lib/youtube.js', array('jquery'), '1.0', true );
wp_enqueue_script( 'kepler_theme-lib-js-fontfaceobserver', get_template_directory_uri() . '/js/lib/fontfaceobserver.js', array('jquery'), '1.0', true );
// Enqueue core kepler_theme JS
wp_enqueue_script( 'kepler_theme-core-js', get_template_directory_uri() . '/js/kepler_theme.js', array('jquery'), '1.0', true );
// IE Support for SVG icons
wp_enqueue_script( 'kepler_theme-ie-svg', get_template_directory_uri().'/js/lib/svgxuse.min.js', array(), '1.0', false);
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}
}
add_action( 'wp_enqueue_scripts', 'kepler_theme_scripts' );
/**
* Enqueue Google Font used in Blog pages
*/
function kepler_theme_google_fonts()
{
function is_blog () {
return ( is_archive() || is_author() || is_category() || is_home() || is_single() || is_tag()) && 'post' == get_post_type();
}
if(is_blog()) {
//You can load blog specific fonts here
}
}
add_action( 'wp_enqueue_scripts', 'kepler_theme_google_fonts' );
/**
* Load the comment walker.
*/
require_once get_template_directory() . '/inc/class-kepler-theme-comment-walker.php';
/**
* Custom template tags for this theme.
*/
require get_template_directory() . '/inc/template-tags.php';
/**
* Customizer additions.
*/
require get_template_directory() . '/inc/customizer.php';
/*
* Remove this filter if you want to make comments box GDPR compliant
*/
function kepler_theme_comment_form_change_cookies_consent( $fields ) {
$fields['cookies'] = '';
return $fields;
}
add_filter( 'comment_form_default_fields', 'kepler_theme_comment_form_change_cookies_consent' );
/*
* Replaces double line-breaks with paragraph elements only for posts
*/
function kepler_theme_page_content_filter($content) {
global $post;
if($post AND $post->post_type === 'post'){
$content = wpautop($content,false);
}
return $content;
}
add_filter( 'the_content', 'kepler_theme_page_content_filter' );
/*
* Safely remove class if kp_ shortcodes are not present in page content
*/
function kepler_theme_safe_remove_body_class( $wp_classes ) {
global $post;
if($post){
if(!has_shortcode( $post->post_content, 'kp_section' )){
$blacklist = array('page');
// Remove classes from array
$wp_classes = array_diff( $wp_classes, $blacklist );
}
}
// Return modified body class array
return $wp_classes;
}
add_filter( 'body_class', 'kepler_theme_safe_remove_body_class', 10, 2 );
/*
* Append kepler_theme_admin class to wp admin body
*/
function kepler_theme_admin_body_class( $classes ) {
global $pagenow;
global $kepler_themeAdminPages;
$bodyClass = "$classes";
if($pagenow == 'admin.php' &&
isset($_GET['page']) &&
in_array($_GET['page'], $kepler_themeAdminPages)){
$bodyClass .= " kepler_theme-plugin-page-styles";
}
$wizardRan = get_option('kepler_wizard_ran');
if($wizardRan != '1') {
$bodyClass .= " kepler_wizard_not_run";
}
return $bodyClass;
}
add_filter( 'admin_body_class', 'kepler_theme_admin_body_class' );
/**
* Appends a custom footer for all kepler_theme pages in WP Admin
*/
function kepler_theme_admin_custom_footer() {
global $pagenow;
global $kepler_themeAdminPages;
if($pagenow == 'admin.php' &&
isset($_GET['page']) &&
in_array($_GET['page'], $kepler_themeAdminPages)){
echo '';
} else {
return;
}
}
add_action('admin_footer', 'kepler_theme_admin_custom_footer');
/**
* Checks if a page is not kepler_theme default tab in WP Admin
* @return bool
*/
function isNotOverview($page) {
$isEssentialsInstalled = class_exists('Kepler_Builder');
$redirectToPage = $isEssentialsInstalled ? 'kepler_theme_overview' : 'kepler_theme';
return $page != $redirectToPage;
}
/**
* Allow or disallow access to a kepler_theme tab in WP admin.
* If the pre-requisites are not met redirect to default tab
*/
function kepler_theme_disallowed_admin_pages() {
global $pagenow;
global $kepler_themeAdminPages;
$isEssentialsInstalled = class_exists('Kepler_Builder');
$redirectToPage = $isEssentialsInstalled ? 'kepler_theme_overview' : 'kepler_theme';
$wizardNotRan = get_option('kepler_wizard_ran') != '1';
$notOverview = array_filter($kepler_themeAdminPages, 'isNotOverview');
if($pagenow == 'admin.php' &&
isset($_GET['page']) &&
in_array($_GET['page'], $notOverview) &&
$wizardNotRan) {
wp_redirect( admin_url( '/admin.php?page=' . $redirectToPage), 301 );
exit;
}
}
add_action( 'admin_init', 'kepler_theme_disallowed_admin_pages' );
remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );
/* START_DEMO_LINES */
/* START_DEMO_LINES */