definitions();
$this->actions();
$this->filters();
$this->dependencies();
}
/**
* Global definitions.
*
* @since 1.0.0
*/
public function definitions() {
self::$version = '1.0.8.2';
self::$dir = trailingslashit( get_template_directory() );
self::$url = trailingslashit( get_template_directory_uri() );
self::$assets = self::$url . 'assets/';
self::$upload_dir = wp_get_upload_dir()['basedir'] . '/kata';
self::$upload_dir_url = wp_get_upload_dir()['baseurl'] . '/kata';
define( 'KATA_VERSION', '1.0.8.2' );
}
/**
* Add actions.
*
* @since 1.0.0
*/
public function actions() {
add_action( 'admin_init', array( $this, 'disable_redirection' ), 1 );
add_action( 'after_setup_theme', array( $this, 'setup' ) );
add_action( 'after_setup_theme', array( $this, 'content_width' ), 0 );
add_action( 'widgets_init', array( $this, 'widgets_init' ) );
add_action( 'wp_enqueue_scripts', array( $this, 'scripts' ) );
add_action( 'wp_head', array( $this, 'pingback_header' ) );
add_action( 'init', array( $this, 'reg_nav' ) );
}
/**
* Add filters.
*
* @since 1.0.0
*/
public function reg_nav() {
register_nav_menus(
array(
'kt-nav-menu' => esc_html__( 'Header Menu', 'kata-app' ),
'kt-foot-menu' => esc_html__( 'Footer Menu', 'kata-app' ),
)
);
}
/**
* Add filters.
*
* @since 1.0.0
*/
public function filters() {
add_filter( 'body_class', array( $this, 'body_classes' ) );
}
/**
* Load dependencies.
*
* @since 1.0.0
*/
public function dependencies() {
/**
* autoloader.
*/
require self::$dir . 'includes/autoloader/autoloader.php';
/**
* Theme helpers.
*/
require self::$dir . 'includes/class-kata-helpers.php';
/**
* Theme Page (dashboard).
*/
require self::$dir . 'includes/dashboard/class-kata-dashboard.php';
/**
* Custom template tags.
*/
require self::$dir . 'includes/class-kata-template-tags.php';
/**
* Customizer.
*/
require self::$dir . 'includes/customizer/kirki.php';
require self::$dir . 'includes/theme-options/theme-options.php';
/**
* Template parts.
*/
require self::$dir . 'template-parts/header.tpl.php';
require self::$dir . 'template-parts/footer.tpl.php';
/**
* Load Jetpack compatibility file.
*/
if ( defined( 'JETPACK__VERSION' ) ) {
require self::$dir . 'includes/jetpack.php';
}
/**
* Load TGM.
*/
if ( ! class_exists( 'Kata_Plus' ) ) {
require self::$dir . '/includes/tgm/class-tgm-plugin-activation.php';
require self::$dir . 'includes/tgm/plugins.php';
}
}
/**
* Disable Redirection.
*
* @since 1.0.0
*/
public function disable_redirection() {
/**
* Disable Elementor Redirection
*/
if ( did_action( 'elementor/loaded' ) ) {
remove_action( 'admin_init', array( \Elementor\Plugin::$instance->admin, 'maybe_redirect_to_getting_started' ) );
}
}
/**
* 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.
*
* @since 1.0.0
*/
public function setup() {
/**
* Make theme available for translation.
* Translations can be filed in the /languages/ directory.
* If you're building a theme based on Kata, use a find and replace
* to change 'kata-app' to the name of your theme in all the template files.
*/
load_theme_textdomain( 'kata-app', self::$dir . '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
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' );
/**
* 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 theme support for selective refresh for widgets.
*/
add_theme_support( 'customize-selective-refresh-widgets' );
/**
* Add theme support post formats.
*/
add_theme_support( 'post-formats', array( 'aside', 'gallery', 'link', 'image', 'quote', 'status', 'video', 'audio', 'chat' ) );
/**
* Kata registration.
*/
if ( get_option( 'kata_is_active' ) ) {
update_option( 'kata_is_active', true );
}
/**
* Enable the use of a custom logo.
*/
add_theme_support( 'custom-logo' );
/**
* Woocommerce Support.
*/
add_theme_support( 'woocommerce', array(
'thumbnail_image_width' => 150,
'single_image_width' => 300,
'product_grid' => array(
'default_rows' => 3,
'min_rows' => 2,
'max_rows' => 8,
'default_columns' => 4,
'min_columns' => 2,
'max_columns' => 5,
),
) );
}
/**
* 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
* @since 1.0.0
*/
public function content_width() {
// Set content-width.
global $content_width;
if ( ! isset( $content_width ) ) {
$content_width = 640;
}
}
/**
* Register widget area.
*
* @link https://developer.wordpress.org/themes/functionality/sidebars/#registering-a-sidebar
* @since 1.0.0
*/
public function widgets_init() {
register_sidebar(
array(
'name' => esc_html__( 'Left Sidebar', 'kata-app' ),
'id' => 'kata-left-sidebar',
'description' => esc_html__( 'Add widgets here.', 'kata-app' ),
'before_widget' => '',
'after_widget' => '
',
'before_title' => '',
)
);
register_sidebar(
array(
'name' => esc_html__( 'Right Sidebar', 'kata-app' ),
'id' => 'kata-right-sidebar',
'description' => esc_html__( 'Add widgets here.', 'kata-app' ),
'before_widget' => '',
'after_widget' => '
',
'before_title' => '',
)
);
register_sidebar(
array(
'name' => esc_html__( 'Footer Column 1', 'kata-app' ),
'id' => 'kata-footr-sidebar-1',
'description' => esc_html__( 'Add widgets here.', 'kata-app' ),
'before_widget' => '',
'after_widget' => '
',
'before_title' => '',
)
);
register_sidebar(
array(
'name' => esc_html__( 'Footer Column 2', 'kata-app' ),
'id' => 'kata-footr-sidebar-2',
'description' => esc_html__( 'Add widgets here.', 'kata-app' ),
'before_widget' => '',
'after_widget' => '
',
'before_title' => '',
)
);
register_sidebar(
array(
'name' => esc_html__( 'Footer Column 3', 'kata-app' ),
'id' => 'kata-footr-sidebar-3',
'description' => esc_html__( 'Add widgets here.', 'kata-app' ),
'before_widget' => '',
'after_widget' => '
',
'before_title' => '',
)
);
register_sidebar(
array(
'name' => esc_html__( 'Footer Bottom Left Widget area', 'kata-app' ),
'id' => 'kata-footr-bot-left-sidebar',
'description' => esc_html__( 'Add widgets here.', 'kata-app' ),
'before_widget' => '',
'after_widget' => '
',
'before_title' => '',
)
);
register_sidebar(
array(
'name' => esc_html__( 'Footer Bottom Right Widget area', 'kata-app' ),
'id' => 'kata-footr-bot-right-sidebar',
'description' => esc_html__( 'Add widgets here.', 'kata-app' ),
'before_widget' => '',
'after_widget' => '
',
'before_title' => '',
)
);
}
/**
* Enqueue scripts and styles.
*
* @since 1.0.0
*/
public function scripts() {
wp_enqueue_style( 'kata-main', get_template_directory_uri() . '/style.css', array(), self::$version );
wp_enqueue_style( 'kata-grid', self::$assets . 'grid.css', array(), self::$version );
wp_enqueue_style( 'kata-theme-styles', self::$assets . 'theme-styles.css', array(), self::$version );
wp_enqueue_style( 'kata-blog-posts', self::$assets . 'blog-posts.css', array(), self::$version );
if ( is_single() ) {
wp_enqueue_style( 'kata-single-post', self::$assets . 'single.css', array(), self::$version );
}
wp_enqueue_style( 'kata-menu-navigation', self::$assets . 'menu-navigation.css', array(), self::$version );
wp_enqueue_script( 'kata-default-scripts', self::$assets . 'default-scripts.js', array( 'jquery' ), self::$version, true );
wp_enqueue_script( 'kata-superfish', self::$assets . 'superfish.js', array( 'jquery', 'kata-default-scripts' ), self::$version, true );
wp_enqueue_style( 'kata-dynamic-styles', self::$upload_dir_url . '/css/dynamic-styles.css', [], rand(1, 999));
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}
}
/**
* Add a pingback url auto-discovery header for single posts, pages, or attachments.
*
* @since 1.0.0
*/
public function pingback_header() {
if ( is_singular() && pings_open() ) {
printf( '', esc_url( get_bloginfo( 'pingback_url' ) ) );
}
}
/**
* Adds custom classes to the array of body classes.
*
* @param array $classes Classes for the body element.
* @return array
* @since 1.0.0
*/
public function body_classes( $classes ) {
// Adds a class of hfeed to non-singular pages.
if ( ! is_singular() ) {
$classes[] = 'hfeed';
}
// Adds a class of no-sidebar when there is no sidebar present.
if ( ! is_active_sidebar( 'left-sidebar' ) && ! is_active_sidebar( 'right-sidebar' ) ) {
$classes[] = 'no-sidebar';
}
/**
* Transparent header.
*/
if ( '1' === Kata_App_Helpers::get_meta_box( 'kata_make_header_transparent' ) ) {
$classes[] = 'kata-make-header-transparent';
}
if ( '1' === Kata_App_Helpers::get_meta_box( 'kata_header_transparent_white_color' ) ) {
$classes[] = 'kata-header-transparent-white-color';
}
return $classes;
}
/**
* Site classes.
*
* @param class $class add custom class to body.
* @since 1.0.0
*/
public static function site_class( $class = '' ) {
$classes = array();
$classes[] = $class;
$classes[] = get_theme_mod( 'kata_layout', 'kata-wide' );
/**
* Separates classes with a single space, collates classes for site container element.
*/
echo 'class="' . esc_attr( join( ' ', $classes ) ) . '"';
}
} // class
Kata_App::get_instance();
}