tags and allow WordPress to provide them add_theme_support( 'title-tag' ); // Experimental support for adding blocks inside nav menus add_theme_support( 'block-nav-menus' ); // Enqueue editor styles. add_editor_style( array( '/assets/ponyfill.css', ) ); // Register two nav menus register_nav_menus( array( 'primary' => __( 'Primary Navigation', 'blockbase' ), 'social' => __( 'Social Navigation', 'blockbase' ) ) ); add_filter( 'block_editor_settings_all', function( $settings ) { $settings['defaultBlockTemplate'] = '
'; return $settings; } ); // Add support for core custom logo. add_theme_support( 'custom-logo', array( 'height' => 192, 'width' => 192, 'flex-width' => true, 'flex-height' => true, ) ); } endif; add_action( 'after_setup_theme', 'blockbase_support', 9 ); /** * * Enqueue scripts and styles. */ function blockbase_editor_styles() { // Enqueue editor styles. add_editor_style( array( blockbase_fonts_url(), ) ); // Add the child theme CSS if it exists. if ( file_exists( get_stylesheet_directory() . '/assets/theme.css' ) ) { add_editor_style( '/assets/theme.css' ); } } add_action( 'admin_init', 'blockbase_editor_styles' ); /** * * Enqueue scripts and styles. */ function blockbase_scripts() { // Enqueue Google fonts wp_enqueue_style( 'blockbase-fonts', blockbase_fonts_url(), array(), null ); wp_enqueue_style( 'blockbase-ponyfill', get_template_directory_uri() . '/assets/ponyfill.css', array(), wp_get_theme()->get( 'Version' ) ); // Add the child theme CSS if it exists. if ( file_exists( get_stylesheet_directory() . '/assets/theme.css' ) ) { wp_enqueue_style( 'blockbase-child-styles', get_stylesheet_directory_uri() . '/assets/theme.css', array('blockbase-ponyfill'), wp_get_theme()->get( 'Version' ) ); } } add_action( 'wp_enqueue_scripts', 'blockbase_scripts' ); /** * Add Google webfonts * * @return $fonts_url */ function blockbase_fonts_url() { if ( ! class_exists( 'WP_Theme_JSON_Resolver_Gutenberg' ) ) { return ''; } $theme_data = WP_Theme_JSON_Resolver_Gutenberg::get_merged_data()->get_settings(); if ( empty( $theme_data ) || empty( $theme_data['typography'] ) || empty( $theme_data['typography']['fontFamilies'] ) ) { return ''; } $font_families = []; if ( ! empty( $theme_data['typography']['fontFamilies']['custom'] ) ) { foreach( $theme_data['typography']['fontFamilies']['custom'] as $font ) { if ( ! empty( $font['google'] ) ) { $font_families[] = $font['google']; } } // NOTE: This should be removed once Gutenberg 12.1 lands stably in all environments } else if ( ! empty( $theme_data['typography']['fontFamilies']['user'] ) ) { foreach( $theme_data['typography']['fontFamilies']['user'] as $font ) { if ( ! empty( $font['google'] ) ) { $font_families[] = $font['google']; } } // End Gutenberg < 12.1 compatibility patch } else { if ( ! empty( $theme_data['typography']['fontFamilies']['theme'] ) ) { foreach( $theme_data['typography']['fontFamilies']['theme'] as $font ) { if ( ! empty( $font['google'] ) ) { $font_families[] = $font['google']; } } } } if ( empty( $font_families ) ) { return ''; } // Make a single request for the theme or user fonts. return esc_url_raw( 'https://fonts.googleapis.com/css2?' . implode( '&', array_unique( $font_families ) ) . '&display=swap' ); } /** * Customize Global Styles */ if ( class_exists( 'WP_Theme_JSON_Resolver_Gutenberg' ) ) { require get_template_directory() . '/inc/customizer/wp-customize-colors.php'; require get_template_directory() . '/inc/customizer/wp-customize-color-palettes.php'; require get_template_directory() . '/inc/customizer/wp-customize-fonts.php'; } require get_template_directory() . '/inc/social-navigation.php'; // Force menus to reload add_action( 'customize_controls_enqueue_scripts', static function () { wp_enqueue_script( 'wp-customize-nav-menu-refresh', get_template_directory_uri() . '/inc/customizer/wp-customize-nav-menu-refresh.js', [ 'customize-nav-menus' ], wp_get_theme()->get( 'Version' ), true ); } ); /** * Disable the fallback for the core/navigation block. */ function blockbase_core_navigation_render_fallback() { return null; } add_filter( 'block_core_navigation_render_fallback', 'blockbase_core_navigation_render_fallback' ); /** * Block Patterns. */ require get_template_directory() . '/inc/block-patterns.php'; // Add the child theme patterns if they exist. if ( file_exists( get_stylesheet_directory() . '/inc/block-patterns.php' ) ) { require_once get_stylesheet_directory() . '/inc/block-patterns.php'; }