cl01/wp-content/themes/hester/inc/core/class-hester-theme-setup.php
2025-02-24 12:39:24 +08:00

197 lines
4.1 KiB
PHP
Executable File

<?php
/**
* Hester Theme Setup Class.
*
* @package Hester
* @author Peregrine Themes
* @since 1.0.0
*/
/**
* Do not allow direct script access.
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ! class_exists( 'Hester_Theme_Setup' ) ) :
/**
* Hester Options Class.
*/
class Hester_Theme_Setup {
/**
* Singleton instance of the class.
*
* @since 1.0.0
* @var object
*/
private static $instance;
/**
* Main Hester_Theme_Setup Instance.
*
* @since 1.0.0
* @return Hester_Theme_Setup
*/
public static function instance() {
if ( ! isset( self::$instance ) && ! ( self::$instance instanceof Hester_Theme_Setup ) ) {
self::$instance = new Hester_Theme_Setup();
}
return self::$instance;
}
/**
* Primary class constructor.
*
* @since 1.0.0
*/
public function __construct() {
// Add theme supports.
add_action( 'after_setup_theme', array( $this, 'setup' ), 10 );
// Content width.
add_action( 'wp', array( $this, 'content_width' ) );
}
/**
* 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 the theme available for translation.
load_theme_textdomain( 'hester', HESTER_THEME_PATH . '/languages' );
// Add default posts and comments RSS feed links to head.
add_theme_support( 'automatic-feed-links' );
// Add theme support for Post Thumbnails and image sizes.
add_theme_support( 'post-thumbnails' );
// Add theme support for various Post Formats.
add_theme_support(
'post-formats',
array(
'gallery',
'image',
'link',
'quote',
'video',
'audio',
'status',
'aside',
)
);
// Add title output.
add_theme_support( 'title-tag' );
// Add wide image support.
add_theme_support( 'align-wide' );
// Responsive embeds support.
add_theme_support( 'responsive-embeds' );
// Add support for core block visual styles.
add_theme_support( 'wp-block-styles' );
// add custom spacing support.
add_theme_support( 'custom-spacing' );
// Selective Refresh for Customizer.
add_theme_support( 'customize-selective-refresh-widgets' );
// Excerpt support for pages.
add_post_type_support( 'page', 'excerpt' );
// Register Navigation menu.
register_nav_menus(
array(
'hester-primary' => esc_html__( 'Primary Navigation', 'hester' ),
)
);
// Add theme support for Custom Logo.
add_theme_support(
'custom-logo',
apply_filters(
'hester_custom_logo_args',
array(
'width' => 200,
'height' => 40,
'flex-height' => true,
'flex-width' => true,
)
)
);
// Add theme support for Custom Background.
add_theme_support(
'custom-background',
apply_filters(
'hester_custom_background_args',
array(
'default-color' => '#FFFFFF',
'default-size' => 'fit',
)
)
);
// Enable HTML5 markup.
add_theme_support(
'html5',
array(
'search-form',
'gallery',
'caption',
'script',
'style',
)
);
// Add editor style.
$hester_suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
add_editor_style( 'assets/css/editor-style' . $hester_suffix . '.css' );
do_action( 'hester_after_setup_theme' );
}
/**
* Set the content width in pixels, based on the theme's design and stylesheet.
*
* @global int $content_width
* @since 1.0.0
*/
public function content_width() {
global $content_width;
if ( ! isset( $content_width ) ) {
$content_width = apply_filters( 'hester_content_width', intval( hester_option( 'container_width' ) ) - 100 ); // phpcs:ignore
}
}
}
endif;
/**
* The function which returns the one Hester_Options instance.
*
* @since 1.0.0
* @return object
*/
function hester_theme_setup() {
return Hester_Theme_Setup::instance();
}
hester_theme_setup();