'ffffff', ) );
// Set content-width.
global $content_width;
if ( ! isset( $content_width ) ) {
$content_width = 580;
}
/*
* Make theme available for translation.
* Translations can be filed in the /languages/ directory.
*/
// Loads wp-content/languages/themes/basho-ru_RU.mo.
load_theme_textdomain( 'basho', trailingslashit( WP_LANG_DIR ) . 'themes/' );
// Loads wp-content/themes/basho-child/languages/basho/ru-RU.mo.
load_theme_textdomain( 'basho', get_stylesheet_directory() . '/languages' );
// Loads wp-content/themes/basho/languages/basho/ru_RU.mo.
load_theme_textdomain( 'basho', 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.
add_theme_support( 'title-tag' );
// Output valid HTML5 markup for search form, comment form, comments, etc.
add_theme_support(
'html5',
array(
'search-form',
'comment-form',
'comment-list',
'gallery',
'caption',
'script',
'style',
)
);
// Enable support for Post Thumbnails on posts and pages.
add_theme_support( 'post-thumbnails' );
// Custom logo.
$logo_width = 170;
$logo_height = 50;
// If the 'basho_retina_logo' setting is active, double the recommended width and height.
if ( get_theme_mod( 'basho_retina_logo', false ) ) {
$logo_width = floor( $logo_width * 2 );
$logo_height = floor( $logo_height * 2 );
}
add_theme_support(
'custom-logo',
array(
'height' => $logo_height,
'width' => $logo_width,
'flex-height' => true,
'flex-width' => true,
)
);
// Add support for full and wide align images.
add_theme_support( 'align-wide' );
// Add theme support for selective refresh for widgets.
add_theme_support( 'customize-selective-refresh-widgets' );
// Add support for responsive embedded content.
add_theme_support( 'responsive-embeds' );
// Adds `async` and `defer` support for scripts registered or enqueued by the theme.
add_filter( 'script_loader_tag', array( $this, 'filter_script_loader_tag' ), 10, 2 );
}
/**
* Register navigation menus.
*/
public function menus() {
$locations = array(
'main' => __( 'Main Navigation', 'basho' ),
'offcanvas' => __( 'Offcanvas Navigation', 'basho' ),
'social' => __( 'Social Links Menu', 'basho' ),
);
register_nav_menus( $locations );
}
/**
* Register theme sidebars.
*/
function sidebars() {
// Arguments used in all register_sidebar() calls.
$sidebar_args = array(
'before_title' => '
',
'before_widget' => '',
);
// Register 4 sidebars.
for ( $i = 1; $i <= 4; $i++ ) {
register_sidebar(
array_merge(
$sidebar_args,
array(
'name' => wp_sprintf( '%s %d', __( 'Footer', 'basho' ), $i ),
'id' => 'footer-sidebar-' . $i,
'description' => wp_sprintf( '%s %d %s', __( 'Widgets in this area will be displayed in column number', 'basho' ), $i, __( 'of the site footer.', 'basho' ) ),
)
)
);
}
}
/**
* Enqueue scripts and styles.
*/
public function scripts() {
global $basho_version;
/**
* Styles.
*/
wp_enqueue_style( 'basho-style', get_stylesheet_uri(), array(), $basho_version );
/**
* Print CSS..
*/
wp_enqueue_style( 'basho-print-style', get_template_directory_uri() . '/print.css', array(), $basho_version, 'print' );
/**
* Fonts.
*/
wp_enqueue_style( 'basho-fonts', $this->google_fonts(), array(), null );
/**
* Scripts.
*/
$suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';
// Load the html5 shiv.
wp_enqueue_script( 'html5', get_theme_file_uri( '/assets/js/html5' . $suffix . '.js' ) );
wp_script_add_data( 'html5', 'conditional', 'lt IE 9' );
wp_script_add_data( 'html5', 'defer', true );
// Enqueue Uikit script.
wp_enqueue_script( 'uikit-js', get_theme_file_uri( '/assets/js/uikit' . $suffix . '.js' ), array(), '3.5.9' );
wp_script_add_data( 'uikit-js', 'defer', true );
wp_enqueue_script( 'uikit-icons-js', get_theme_file_uri( '/assets/js/uikit-icons' . $suffix . '.js' ), array( 'uikit-js' ), '3.5.9' );
wp_script_add_data( 'uikit-icons-js', 'defer', true );
// Enqueue theme script.
wp_enqueue_script( 'basho-js', get_theme_file_uri( '/assets/js/basho' . $suffix . '.js' ), array( 'uikit-js' ), $basho_version, true );
wp_script_add_data( 'basho-js', 'defer', true );
// Comment reply script.
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}
}
/**
* Enqueue supplemental block editor styles.
*/
public function blocks() {
global $basho_version;
/**
* Fonts.
*/
wp_enqueue_style( 'basho-fonts', $this->google_fonts(), array(), null );
/**
* Block editor styles.
*/
wp_enqueue_style( 'basho-block-editor-style', get_theme_file_uri( '/assets/css/editor-style-block.css' ), array(), $basho_version );
}
/**
* Load Google Fonts.
*/
public function google_fonts() {
$google_fonts = apply_filters(
'basho_google_font_families', array(
'open-sans' => 'Merriweather:400,400i,700,700i',
)
);
$query_args = array(
'family' => implode( '|', $google_fonts ),
'subset' => rawurlencode( 'latin,cyrillic' ),
'display' => 'swap',
);
$fonts_url = add_query_arg( $query_args, 'https://fonts.googleapis.com/css' );
return $fonts_url;
}
/**
* Adds async/defer attributes to enqueued / registered scripts.
*
* If #12009 lands in WordPress, this function can no-op since it would be handled in core.
*
* @link https://core.trac.wordpress.org/ticket/12009
*
* @param string $tag The script tag.
* @param string $handle The script handle.
* @return string Script HTML string.
*/
public function filter_script_loader_tag( $tag, $handle ) {
foreach ( [ 'async', 'defer' ] as $attr ) {
if ( ! wp_scripts()->get_data( $handle, $attr ) ) {
continue;
}
// Prevent adding attribute when already added in #12009.
if ( ! preg_match( ":\s$attr(=|>|\s):", $tag ) ) {
$tag = preg_replace( ':(?=>):', " $attr", $tag, 1 );
}
// Only allow async or defer, not both.
break;
}
return $tag;
}
}
endif;
return new Basho();