WordPress/wp-content/themes/twentytwentytwo/functions.php
jffng 6ebd3a8fc9 Twenty Twenty-Two: Sync updates from GitHub.
This commit syncs several changes for the default theme from its active development repository to core. 

This is a follow up to [52081], [52107], and [52164]. It includes improvements to the home page template, adding a filter for block patterns, pre-loading the web font, improvements and bug fixes to block patterns, and more. For a full list of changes, visit e4f69d0b7e...25d74deaa5.

Props jeffpaul, richtabor, netweb, luminuu, melchoyce, beafealho, clucasrowlands, desrosj, flixos90, joen, otto42, saju4wordpress, westonruter, kjellr, poena.
See #54318.

Built from https://develop.svn.wordpress.org/trunk@52222


git-svn-id: http://core.svn.wordpress.org/trunk@51814 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-11-19 20:13:59 +00:00

150 lines
3.4 KiB
PHP

<?php
/**
* Twenty Twenty-Two functions and definitions
*
* @link https://developer.wordpress.org/themes/basics/theme-functions/
*
* @package WordPress
* @subpackage Twenty_Twenty_Two
* @since Twenty Twenty-Two 1.0
*/
if ( ! function_exists( 'twentytwentytwo_support' ) ) :
/**
* Sets up theme defaults and registers support for various WordPress features.
*
* @since Twenty Twenty-Two 1.0
*
* @return void
*/
function twentytwentytwo_support() {
// Add support for block styles.
add_theme_support( 'wp-block-styles' );
// Enqueue editor styles.
add_editor_style( 'style.css' );
}
endif;
add_action( 'after_setup_theme', 'twentytwentytwo_support' );
if ( ! function_exists( 'twentytwentytwo_styles' ) ) :
/**
* Enqueue styles.
*
* @since Twenty Twenty-Two 1.0
*
* @return void
*/
function twentytwentytwo_styles() {
// Register theme stylesheet.
wp_register_style(
'twentytwentytwo-style',
get_template_directory_uri() . '/style.css',
array(),
wp_get_theme()->get( 'Version' )
);
// Add styles inline.
wp_add_inline_style( 'twentytwentytwo-style', twentytwentytwo_get_font_face_styles() );
// Enqueue theme stylesheet.
wp_enqueue_style( 'twentytwentytwo-style' );
}
endif;
add_action( 'wp_enqueue_scripts', 'twentytwentytwo_styles' );
if ( ! function_exists( 'twentytwentytwo_editor_styles' ) ) :
/**
* Enqueue editor styles.
*
* @since Twenty Twenty-Two 1.0
*
* @return void
*/
function twentytwentytwo_editor_styles() {
// Add styles inline.
wp_add_inline_style( 'wp-block-library', twentytwentytwo_get_font_face_styles() );
}
endif;
add_action( 'admin_init', 'twentytwentytwo_editor_styles' );
if ( ! function_exists( 'twentytwentytwo_get_font_face_styles' ) ) :
/**
* Get font face styles.
* Called by functions twentytwentytwo_styles() and twentytwentytwo_editor_styles() above.
*
* @since Twenty Twenty-Two 1.0
*
* @return string
*/
function twentytwentytwo_get_font_face_styles() {
return "
@font-face{
font-family: 'Source Serif Pro';
font-weight: 200 900;
font-style: normal;
font-stretch: normal;
font-display: swap;
src: url('" . get_theme_file_uri( 'assets/fonts/SourceSerif4Variable-Roman.ttf.woff2' ) . "') format('woff2');
}
@font-face{
font-family: 'Source Serif Pro';
font-weight: 200 900;
font-style: italic;
font-stretch: normal;
font-display: swap;
src: url('" . get_theme_file_uri( 'assets/fonts/SourceSerif4Variable-Italic.ttf.woff2' ) . "') format('woff2');
}
";
}
endif;
if ( ! function_exists( 'twentytwentytwo_preload_webfonts' ) ) :
/**
* Preloads the main web font to improve performance.
*
* Only the main web font (font-style: normal) is preloaded here since that font is always relevant (e.g. it used
* on every heading). The other font is only needed if there is any applicable content in italic style, and
* therefore preloading it would in most cases regress performance when that font would otherwise not be loaded at
* all.
*
* @since Twenty Twenty-Two 1.0
*
* @return void
*/
function twentytwentytwo_preload_webfonts() {
?>
<link rel="preload" href="<?php echo esc_url( get_theme_file_uri( 'assets/fonts/SourceSerif4Variable-Roman.ttf.woff2' ) ); ?>" as="font" type="font/woff2" crossorigin>
<?php
}
endif;
add_action( 'wp_head', 'twentytwentytwo_preload_webfonts' );
// Add block patterns
require get_template_directory() . '/inc/block-patterns.php';