get( 'Version' );
self::$theme_url = $theme->get( 'ThemeURI' );
self::$theme_name = $theme->get( 'Name' );
self::$theme_author = $theme->get( 'Author' );
self::$path = get_template_directory();
self::$_instance->init();
}
return self::$_instance;
}
/**
* Get data from method of property
*
* @param string $key
*
* @return bool|mixed
*/
function get( $key ) {
if ( method_exists( $this, 'get_' . $key ) ) {
return call_user_func_array( array( $this, 'get_' . $key ), array() );
} elseif ( property_exists( $this, $key ) ) {
return $this->{$key};
}
return false;
}
/**
* 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 content_width() {
$GLOBALS['content_width'] = apply_filters( 'starterblog_content_width', 843 );
}
/**
* 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 theme_setup() {
/*
* Make theme available for translation.
* Translations can be filed in the /languages/ directory.
* If you're building a theme based on starterblog, use a find and replace
* to change 'starterblog' to the name of your theme in all the template files.
*/
load_theme_textdomain( 'starterblog', 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
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(
'menu-1' => esc_html__( 'Primary', 'starter-blog' ),
)
);
/*
* 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 for page excerpt.
add_post_type_support( 'page', 'excerpt' );
/**
* Add support for core custom logo.
*
* @link https://codex.wordpress.org/Theme_Logo
*/
add_theme_support(
'custom-logo',
array(
'height' => 250,
'width' => 250,
'flex-width' => true,
'flex-height' => true,
)
);
/**
* WooCommerce support.
*/
add_theme_support( 'woocommerce' );
add_theme_support( 'wc-product-gallery-zoom' );
add_theme_support( 'wc-product-gallery-lightbox' );
add_theme_support( 'wc-product-gallery-slider' );
/**
* Support Gutenberg.
*
* @since 0.2.6
*/
add_theme_support( 'align-wide' );
/**
* Add editor style support.
*/
add_theme_support( 'editor-styles' );
}
/**
* Register sidebars area.
*
* @link https://developer.wordpress.org/themes/functionality/sidebars/#registering-a-sidebar
*/
function register_sidebars() {
register_sidebar(
array(
'name' => esc_html__( 'Primary Sidebar', 'starter-blog' ),
'id' => 'sidebar-1',
'description' => esc_html__( 'Add widgets here.', 'starter-blog' ),
'before_widget' => '',
'before_title' => '',
)
);
register_sidebar(
array(
'name' => esc_html__( 'Secondary Sidebar', 'starter-blog' ),
'id' => 'sidebar-2',
'description' => esc_html__( 'Add widgets here.', 'starter-blog' ),
'before_widget' => '',
'before_title' => '',
)
);
for ( $i = 1; $i <= 6; $i ++ ) {
register_sidebar(
array(
/* translators: 1: Widget number. */
'name' => sprintf( __( 'Footer Sidebar %d', 'starter-blog' ), $i ),
'id' => 'footer-' . $i,
'description' => __( 'Add widgets here.', 'starter-blog' ),
'before_widget' => '',
'before_title' => '',
)
);
}
}
/**
* Get asset suffix `.min` or empty if WP_DEBUG enabled
*
* @return string
*/
function get_asset_suffix() {
$suffix = '.min';
if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
$suffix = '';
}
return $suffix;
}
/**
* Get theme style.css url
*
* @return string
*/
function get_style_uri() {
$suffix = $this->get_asset_suffix();
$style_dir = get_template_directory();
$suffix_css = $suffix;
$css_file = false;
if ( is_rtl() ) {
$suffix_css = '-rtl' . $suffix;
}
$min_file = $style_dir . '/style' . $suffix_css . '.css';
if ( file_exists( $min_file ) ) {
$css_file = esc_url( get_template_directory_uri() ) . '/style' . $suffix_css . '.css';
}
if ( ! $css_file ) {
$css_file = get_stylesheet_uri();
}
return $css_file;
}
/**
* Enqueue scripts and styles.
*/
function scripts() {
if ( ! class_exists( 'StarterBlog_Font_Icons' ) ) {
require_once get_template_directory() . '/inc/customizer/class-customizer-icons.php';
}
StarterBlog_Font_Icons::get_instance()->enqueue();
$suffix = $this->get_asset_suffix();
do_action( 'starterblog/load-scripts' );
$css_files = apply_filters(
'starterblog/theme/css',
array(
'google-font' => StarterBlog_Customizer_Auto_CSS::get_instance()->get_font_url(),
'style' => $this->get_style_uri(),
)
);
$js_files = apply_filters(
'starterblog/theme/js',
array(
'starterblog-themejs' => array(
'url' => esc_url( get_template_directory_uri() ) . '/assets/js/theme' . $suffix . '.js',
'ver' => self::$version,
),
)
);
foreach ( $css_files as $id => $url ) {
$deps = array();
if ( is_array( $url ) ) {
$arg = wp_parse_args(
$url,
array(
'deps' => array(),
'url' => '',
'ver' => self::$version,
)
);
wp_enqueue_style( 'starterblog-' . $id, $arg['url'], $arg['deps'], $arg['ver'] );
} elseif ( $url ) {
wp_enqueue_style( 'starterblog-' . $id, $url, $deps, self::$version );
}
}
foreach ( $js_files as $id => $arg ) {
$deps = array();
$ver = '';
if ( is_array( $arg ) ) {
$arg = wp_parse_args(
$arg,
array(
'deps' => '',
'url' => '',
'ver' => '',
)
);
$deps = $arg['deps'];
$url = $arg['url'];
$ver = $arg['ver'];
} else {
$url = $arg;
}
if ( ! $ver ) {
$ver = self::$version;
}
wp_enqueue_script( $id, $url, $deps, $ver, true );
}
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}
wp_add_inline_style( 'starterblog-style', StarterBlog_Customizer_Auto_CSS::get_instance()->auto_css() );
wp_localize_script(
'starterblog-themejs',
'StarterBlog_JS',
apply_filters( // phpcs:ignore
'StarterBlog_JS',
array(
'is_rtl' => is_rtl(),
'css_media_queries' => StarterBlog_Customizer_Auto_CSS::get_instance()->media_queries,
'sidebar_menu_no_duplicator' => StarterBlog()->get_setting( 'header_sidebar_menu_no_duplicator' ),
)
)
);
do_action( 'starterblog/theme/scripts' );
}
public function starterblog_style() {
}
function admin_scripts() {
}
private function includes() {
$files = array(
'/inc/class-metabox.php',
// Metabox settings.
'/inc/template-class.php',
// Template element classes.
'/inc/extras.php',
// Custom functions that act independently of the theme templates.
'/inc/element-classes.php',
// Functions which enhance the theme by hooking into WordPress and itself (huh?).
'/inc/template-tags.php',
// Custom template tags for this theme.
'/inc/template-functions.php',
// Functions which enhance the theme by hooking into WordPress.
'/inc/customizer/class-customizer.php',
// Customizer additions.
'/inc/panel-builder/class-panel-builder.php',
// Panel builder additions.
'/inc/blog/class-related-posts.php',
// Blog entry builder.
'/inc/blog/class-post-entry.php',
// Blog entry builder.
'/inc/blog/class-posts-layout.php',
// Blog posts layout.
'/inc/blog/functions-posts-layout.php',
);
foreach ( $files as $file ) {
require_once self::$path . $file;
}
$this->load_configs();
$this->load_compatibility();
$this->admin_includes();
// Custom categories walker class.
if ( ! is_admin() ) {
require_once self::$path . '/inc/class-categories-walker.php';
}
}
/**
* Load admin files
*
* @since 0.0.1
* @since 0.2.6 Load editor style.
*
* @return void
*/
private function admin_includes() {
if ( ! is_admin() ) {
return;
}
$files = array(
'/inc/admin/editor.php', // Metabox settings.
'/inc/admin/dashboard.php', // Metabox settings.
);
foreach ( $files as $file ) {
require_once self::$path . $file;
}
add_action( 'admin_enqueue_scripts', array( $this, 'admin_scripts' ) );
}
/**
* Load configs
*/
private function load_configs() {
$config_files = array(
// Site Settings.
'upsell',
'layouts',
'blogs',
'single-blog-post',
'related-posts',
'search',
'styling',
'typography',
'page-header',
'background',
'compatibility',
// Header Builder Panel.
'header/panel',
'header/html',
'header/logo',
'header/nav-icon',
'header/primary-menu',
'header/templates',
'header/templates',
'header/logo',
'header/search-icon',
'header/search-box',
'header/menus',
'header/nav-icon',
'header/button',
'header/social-icons',
// Footer Builder Panel.
'footer/panel',
'footer/widgets',
'footer/templates',
'footer/widgets',
'footer/copyright',
'footer/social-icons',
);
$path = get_template_directory();
// Load default config values.
require_once $path . '/inc/customizer/configs/config-default.php';
// Load site configs.
foreach ( $config_files as $f ) {
$file = $path . "/inc/customizer/configs/{$f}.php";
if ( file_exists( $file ) ) {
require_once $file;
}
}
}
/**
* Load site compatibility supports
*/
private function load_compatibility() {
$compatibility_config_files = array(
'elementor', // Plugin breadcrumb-navxt & Yoat Seo.
'breadcrumb', // Plugin breadcrumb-navxt & Yoat Seo.
'woocommerce/woocommerce', // Plugin WooCommerce.
);
foreach ( $compatibility_config_files as $f ) {
$file = self::$path . "/inc/compatibility/{$f}.php";
if ( file_exists( $file ) ) {
require_once $file;
}
}
}
/**
* Check if WooCommerce plugin activated
*
* @see WooCommerce
* @see wc
*
* @return bool
*/
function is_woocommerce_active() {
return class_exists( 'WooCommerce' ) || function_exists( 'wc' );
}
function is_using_post() {
$use = false;
if ( is_singular() ) {
$use = true;
} else {
if ( is_front_page() && is_home() ) {
$use = false;
} elseif ( is_front_page() ) {
// static homepage.
$use = true;
} elseif ( is_home() ) {
// blog page.
$use = true;
} else {
if ( $this->is_woocommerce_active() ) {
if ( is_shop() ) {
$use = true;
}
}
}
}
return $use;
}
function is_blog() {
$is_blog = false;
if ( is_front_page() && is_home() ) {
$is_blog = true;
} elseif ( is_front_page() ) { //phpcs:ignore
// static homepage.
} elseif ( is_home() ) {
$is_blog = true;
}
return $is_blog;
}
function get_current_post_id() {
$id = get_the_ID();
if ( is_front_page() && is_home() ) {
$id = false;
} elseif ( is_front_page() ) {
// Static homepage.
$id = get_option( 'page_on_front' );
} elseif ( is_home() ) {
// Blog page.
$id = get_option( 'page_for_posts' );
} else {
if ( $this->is_woocommerce_active() ) {
if ( is_shop() ) {
$id = wc_get_page_id( 'shop' );
}
}
}
return $id;
}
function init() {
$this->init_hooks();
$this->includes();
$this->customizer = StarterBlog_Customizer::get_instance();
$this->customizer->init();
do_action( 'starterblog/init' );
}
function get_setting( $id, $device = 'desktop', $key = null ) {
return StarterBlog_Customizer::get_instance()->get_setting( $id, $device, $key );
}
function get_media( $value, $size = null ) {
return StarterBlog_Customizer::get_instance()->get_media( $value, $size );
}
function get_setting_tab( $name, $tab = null ) {
return StarterBlog_Customizer::get_instance()->get_setting_tab( $name, $tab );
}
function get_post_types( $_builtin = true ) {
if ( 'all' === $_builtin ) {
$post_type_args = array(
'publicly_queryable' => true,
);
} else {
$post_type_args = array(
'publicly_queryable' => true,
'_builtin' => $_builtin,
);
}
$_post_types = get_post_types( $post_type_args, 'objects' );
$post_types = array();
foreach ( $_post_types as $post_type => $object ) {
$post_types[ $post_type ] = array(
'name' => $object->label,
'singular_name' => $object->labels->singular_name,
);
}
return $post_types;
}
}
if ( function_exists( 'wp_body_open' ) ) {
wp_body_open();
} else {
do_action( 'wp_body_open' );
}