diff options
Diffstat (limited to 'themes/twentysixteen/functions.php')
-rw-r--r-- | themes/twentysixteen/functions.php | 439 |
1 files changed, 253 insertions, 186 deletions
diff --git a/themes/twentysixteen/functions.php b/themes/twentysixteen/functions.php index 3e675eaf..1bade4ca 100644 --- a/themes/twentysixteen/functions.php +++ b/themes/twentysixteen/functions.php @@ -33,108 +33,173 @@ if ( version_compare( $GLOBALS['wp_version'], '4.4-alpha', '<' ) ) { } if ( ! function_exists( 'twentysixteen_setup' ) ) : - /** - * Sets up theme defaults and registers support for various WordPress features. +/** + * 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. + * + * Create your own twentysixteen_setup() function to override in a child theme. + * + * @since Twenty Sixteen 1.0 + */ +function twentysixteen_setup() { + /* + * Make theme available for translation. + * Translations can be filed at WordPress.org. See: https://translate.wordpress.org/projects/wp-themes/twentysixteen + * If you're building a theme based on Twenty Sixteen, use a find and replace + * to change 'twentysixteen' to the name of your theme in all the template files + */ + load_theme_textdomain( 'twentysixteen' ); + + // 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 <title> tag in the document head, and expect WordPress to + * provide it for us. + */ + add_theme_support( 'title-tag' ); + + /* + * Enable support for custom logo. * - * 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 Twenty Sixteen 1.2 + */ + add_theme_support( 'custom-logo', array( + 'height' => 240, + 'width' => 240, + 'flex-height' => true, + ) ); + + /* + * Enable support for Post Thumbnails on posts and pages. * - * Create your own twentysixteen_setup() function to override in a child theme. + * @link https://codex.wordpress.org/Function_Reference/add_theme_support#Post_Thumbnails + */ + add_theme_support( 'post-thumbnails' ); + set_post_thumbnail_size( 1200, 9999 ); + + // This theme uses wp_nav_menu() in two locations. + register_nav_menus( array( + 'primary' => __( 'Primary Menu', 'twentysixteen' ), + 'social' => __( 'Social Links Menu', 'twentysixteen' ), + ) ); + + /* + * 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', + ) ); + + /* + * Enable support for Post Formats. * - * @since Twenty Sixteen 1.0 + * See: https://codex.wordpress.org/Post_Formats */ - function twentysixteen_setup() { - /* - * Make theme available for translation. - * Translations can be filed at WordPress.org. See: https://translate.wordpress.org/projects/wp-themes/twentysixteen - * If you're building a theme based on Twenty Sixteen, use a find and replace - * to change 'twentysixteen' to the name of your theme in all the template files - */ - load_theme_textdomain( 'twentysixteen' ); - - // 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 <title> tag in the document head, and expect WordPress to - * provide it for us. - */ - add_theme_support( 'title-tag' ); - - /* - * Enable support for custom logo. - * - * @since Twenty Sixteen 1.2 - */ - add_theme_support( - 'custom-logo', array( - 'height' => 240, - 'width' => 240, - 'flex-height' => true, - ) - ); - - /* - * Enable support for Post Thumbnails on posts and pages. - * - * @link https://codex.wordpress.org/Function_Reference/add_theme_support#Post_Thumbnails - */ - add_theme_support( 'post-thumbnails' ); - set_post_thumbnail_size( 1200, 9999 ); - - // This theme uses wp_nav_menu() in two locations. - register_nav_menus( - array( - 'primary' => __( 'Primary Menu', 'twentysixteen' ), - 'social' => __( 'Social Links Menu', 'twentysixteen' ), - ) - ); - - /* - * 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', - ) - ); - - /* - * Enable support for Post Formats. - * - * See: https://codex.wordpress.org/Post_Formats - */ - add_theme_support( - 'post-formats', array( - 'aside', - 'image', - 'video', - 'quote', - 'link', - 'gallery', - 'status', - 'audio', - 'chat', - ) - ); - - /* - * This theme styles the visual editor to resemble the theme style, - * specifically font, colors, icons, and column width. - */ - add_editor_style( array( 'css/editor-style.css', twentysixteen_fonts_url() ) ); - - // Indicate widget sidebars can use selective refresh in the Customizer. - add_theme_support( 'customize-selective-refresh-widgets' ); - } + add_theme_support( 'post-formats', array( + 'aside', + 'image', + 'video', + 'quote', + 'link', + 'gallery', + 'status', + 'audio', + 'chat', + ) ); + + /* + * This theme styles the visual editor to resemble the theme style, + * specifically font, colors, icons, and column width. + */ + add_editor_style( array( 'css/editor-style.css', twentysixteen_fonts_url() ) ); + + // Load regular editor styles into the new block-based editor. + add_theme_support( 'editor-styles' ); + + // Load default block styles. + add_theme_support( 'wp-block-styles' ); + + // Add support for responsive embeds. + add_theme_support( 'responsive-embeds' ); + + // Add support for custom color scheme. + add_theme_support( 'editor-color-palette', array( + array( + 'name' => __( 'Dark Gray', 'twentysixteen' ), + 'slug' => 'dark-gray', + 'color' => '#1a1a1a', + ), + array( + 'name' => __( 'Medium Gray', 'twentysixteen' ), + 'slug' => 'medium-gray', + 'color' => '#686868', + ), + array( + 'name' => __( 'Light Gray', 'twentysixteen' ), + 'slug' => 'light-gray', + 'color' => '#e5e5e5', + ), + array( + 'name' => __( 'White', 'twentysixteen' ), + 'slug' => 'white', + 'color' => '#fff', + ), + array( + 'name' => __( 'Blue Gray', 'twentysixteen' ), + 'slug' => 'blue-gray', + 'color' => '#4d545c', + ), + array( + 'name' => __( 'Bright Blue', 'twentysixteen' ), + 'slug' => 'bright-blue', + 'color' => '#007acc', + ), + array( + 'name' => __( 'Light Blue', 'twentysixteen' ), + 'slug' => 'light-blue', + 'color' => '#9adffd', + ), + array( + 'name' => __( 'Dark Brown', 'twentysixteen' ), + 'slug' => 'dark-brown', + 'color' => '#402b30', + ), + array( + 'name' => __( 'Medium Brown', 'twentysixteen' ), + 'slug' => 'medium-brown', + 'color' => '#774e24', + ), + array( + 'name' => __( 'Dark Red', 'twentysixteen' ), + 'slug' => 'dark-red', + 'color' => '#640c1f', + ), + array( + 'name' => __( 'Bright Red', 'twentysixteen' ), + 'slug' => 'bright-red', + 'color' => '#ff675f', + ), + array( + 'name' => __( 'Yellow', 'twentysixteen' ), + 'slug' => 'yellow', + 'color' => '#ffef8e', + ), + ) ); + + // Indicate widget sidebars can use selective refresh in the Customizer. + add_theme_support( 'customize-selective-refresh-widgets' ); +} endif; // twentysixteen_setup add_action( 'after_setup_theme', 'twentysixteen_setup' ); @@ -160,85 +225,77 @@ add_action( 'after_setup_theme', 'twentysixteen_content_width', 0 ); * @since Twenty Sixteen 1.0 */ function twentysixteen_widgets_init() { - register_sidebar( - array( - 'name' => __( 'Sidebar', 'twentysixteen' ), - 'id' => 'sidebar-1', - 'description' => __( 'Add widgets here to appear in your sidebar.', 'twentysixteen' ), - 'before_widget' => '<section id="%1$s" class="widget %2$s">', - 'after_widget' => '</section>', - 'before_title' => '<h2 class="widget-title">', - 'after_title' => '</h2>', - ) - ); - - register_sidebar( - array( - 'name' => __( 'Content Bottom 1', 'twentysixteen' ), - 'id' => 'sidebar-2', - 'description' => __( 'Appears at the bottom of the content on posts and pages.', 'twentysixteen' ), - 'before_widget' => '<section id="%1$s" class="widget %2$s">', - 'after_widget' => '</section>', - 'before_title' => '<h2 class="widget-title">', - 'after_title' => '</h2>', - ) - ); - - register_sidebar( - array( - 'name' => __( 'Content Bottom 2', 'twentysixteen' ), - 'id' => 'sidebar-3', - 'description' => __( 'Appears at the bottom of the content on posts and pages.', 'twentysixteen' ), - 'before_widget' => '<section id="%1$s" class="widget %2$s">', - 'after_widget' => '</section>', - 'before_title' => '<h2 class="widget-title">', - 'after_title' => '</h2>', - ) - ); + register_sidebar( array( + 'name' => __( 'Sidebar', 'twentysixteen' ), + 'id' => 'sidebar-1', + 'description' => __( 'Add widgets here to appear in your sidebar.', 'twentysixteen' ), + 'before_widget' => '<section id="%1$s" class="widget %2$s">', + 'after_widget' => '</section>', + 'before_title' => '<h2 class="widget-title">', + 'after_title' => '</h2>', + ) ); + + register_sidebar( array( + 'name' => __( 'Content Bottom 1', 'twentysixteen' ), + 'id' => 'sidebar-2', + 'description' => __( 'Appears at the bottom of the content on posts and pages.', 'twentysixteen' ), + 'before_widget' => '<section id="%1$s" class="widget %2$s">', + 'after_widget' => '</section>', + 'before_title' => '<h2 class="widget-title">', + 'after_title' => '</h2>', + ) ); + + register_sidebar( array( + 'name' => __( 'Content Bottom 2', 'twentysixteen' ), + 'id' => 'sidebar-3', + 'description' => __( 'Appears at the bottom of the content on posts and pages.', 'twentysixteen' ), + 'before_widget' => '<section id="%1$s" class="widget %2$s">', + 'after_widget' => '</section>', + 'before_title' => '<h2 class="widget-title">', + 'after_title' => '</h2>', + ) ); } add_action( 'widgets_init', 'twentysixteen_widgets_init' ); if ( ! function_exists( 'twentysixteen_fonts_url' ) ) : - /** - * Register Google fonts for Twenty Sixteen. - * - * Create your own twentysixteen_fonts_url() function to override in a child theme. - * - * @since Twenty Sixteen 1.0 - * - * @return string Google fonts URL for the theme. - */ - function twentysixteen_fonts_url() { - $fonts_url = ''; - $fonts = array(); - $subsets = 'latin,latin-ext'; - - /* translators: If there are characters in your language that are not supported by Merriweather, translate this to 'off'. Do not translate into your own language. */ - if ( 'off' !== _x( 'on', 'Merriweather font: on or off', 'twentysixteen' ) ) { - $fonts[] = 'Merriweather:400,700,900,400italic,700italic,900italic'; - } - - /* translators: If there are characters in your language that are not supported by Montserrat, translate this to 'off'. Do not translate into your own language. */ - if ( 'off' !== _x( 'on', 'Montserrat font: on or off', 'twentysixteen' ) ) { - $fonts[] = 'Montserrat:400,700'; - } +/** + * Register Google fonts for Twenty Sixteen. + * + * Create your own twentysixteen_fonts_url() function to override in a child theme. + * + * @since Twenty Sixteen 1.0 + * + * @return string Google fonts URL for the theme. + */ +function twentysixteen_fonts_url() { + $fonts_url = ''; + $fonts = array(); + $subsets = 'latin,latin-ext'; + + /* translators: If there are characters in your language that are not supported by Merriweather, translate this to 'off'. Do not translate into your own language. */ + if ( 'off' !== _x( 'on', 'Merriweather font: on or off', 'twentysixteen' ) ) { + $fonts[] = 'Merriweather:400,700,900,400italic,700italic,900italic'; + } - /* translators: If there are characters in your language that are not supported by Inconsolata, translate this to 'off'. Do not translate into your own language. */ - if ( 'off' !== _x( 'on', 'Inconsolata font: on or off', 'twentysixteen' ) ) { - $fonts[] = 'Inconsolata:400'; - } + /* translators: If there are characters in your language that are not supported by Montserrat, translate this to 'off'. Do not translate into your own language. */ + if ( 'off' !== _x( 'on', 'Montserrat font: on or off', 'twentysixteen' ) ) { + $fonts[] = 'Montserrat:400,700'; + } - if ( $fonts ) { - $fonts_url = add_query_arg( - array( - 'family' => urlencode( implode( '|', $fonts ) ), - 'subset' => urlencode( $subsets ), - ), 'https://fonts.googleapis.com/css' - ); - } + /* translators: If there are characters in your language that are not supported by Inconsolata, translate this to 'off'. Do not translate into your own language. */ + if ( 'off' !== _x( 'on', 'Inconsolata font: on or off', 'twentysixteen' ) ) { + $fonts[] = 'Inconsolata:400'; + } - return $fonts_url; + if ( $fonts ) { + $fonts_url = add_query_arg( array( + 'family' => urlencode( implode( '|', $fonts ) ), + 'subset' => urlencode( $subsets ), + ), 'https://fonts.googleapis.com/css' ); } + + return $fonts_url; +} endif; /** @@ -268,6 +325,9 @@ function twentysixteen_scripts() { // Theme stylesheet. wp_enqueue_style( 'twentysixteen-style', get_stylesheet_uri() ); + // Theme block stylesheet. + wp_enqueue_style( 'twentysixteen-block-style', get_template_directory_uri() . '/css/blocks.css', array( 'twentysixteen-style' ), '20181018' ); + // Load the Internet Explorer specific stylesheet. wp_enqueue_style( 'twentysixteen-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentysixteen-style' ), '20160816' ); wp_style_add_data( 'twentysixteen-ie', 'conditional', 'lt IE 10' ); @@ -296,16 +356,27 @@ function twentysixteen_scripts() { wp_enqueue_script( 'twentysixteen-script', get_template_directory_uri() . '/js/functions.js', array( 'jquery' ), '20160816', true ); - wp_localize_script( - 'twentysixteen-script', 'screenReaderText', array( - 'expand' => __( 'expand child menu', 'twentysixteen' ), - 'collapse' => __( 'collapse child menu', 'twentysixteen' ), - ) - ); + wp_localize_script( 'twentysixteen-script', 'screenReaderText', array( + 'expand' => __( 'expand child menu', 'twentysixteen' ), + 'collapse' => __( 'collapse child menu', 'twentysixteen' ), + ) ); } add_action( 'wp_enqueue_scripts', 'twentysixteen_scripts' ); /** + * Enqueue styles for the block-based editor. + * + * @since Twenty Sixteen 1.6 + */ +function twentysixteen_block_editor_styles() { + // Block styles. + wp_enqueue_style( 'twentysixteen-block-editor-style', get_template_directory_uri() . '/css/editor-blocks.css' ); + // Add custom fonts. + wp_enqueue_style( 'twentysixteen-fonts', twentysixteen_fonts_url(), array(), null ); +} +add_action( 'enqueue_block_editor_assets', 'twentysixteen_block_editor_styles' ); + +/** * Adds custom classes to the array of body classes. * * @since Twenty Sixteen 1.0 @@ -351,10 +422,10 @@ function twentysixteen_hex2rgb( $color ) { $color = trim( $color, '#' ); if ( strlen( $color ) === 3 ) { - $r = hexdec( substr( $color, 0, 1 ) . substr( $color, 0, 1 ) ); - $g = hexdec( substr( $color, 1, 1 ) . substr( $color, 1, 1 ) ); - $b = hexdec( substr( $color, 2, 1 ) . substr( $color, 2, 1 ) ); - } elseif ( strlen( $color ) === 6 ) { + $r = hexdec( substr( $color, 0, 1 ).substr( $color, 0, 1 ) ); + $g = hexdec( substr( $color, 1, 1 ).substr( $color, 1, 1 ) ); + $b = hexdec( substr( $color, 2, 1 ).substr( $color, 2, 1 ) ); + } else if ( strlen( $color ) === 6 ) { $r = hexdec( substr( $color, 0, 2 ) ); $g = hexdec( substr( $color, 2, 2 ) ); $b = hexdec( substr( $color, 4, 2 ) ); @@ -362,11 +433,7 @@ function twentysixteen_hex2rgb( $color ) { return array(); } - return array( - 'red' => $r, - 'green' => $g, - 'blue' => $b, - ); + return array( 'red' => $r, 'green' => $g, 'blue' => $b ); } /** @@ -411,7 +478,7 @@ function twentysixteen_content_image_sizes_attr( $sizes, $size ) { return $sizes; } -add_filter( 'wp_calculate_image_sizes', 'twentysixteen_content_image_sizes_attr', 10, 2 ); +add_filter( 'wp_calculate_image_sizes', 'twentysixteen_content_image_sizes_attr', 10 , 2 ); /** * Add custom image sizes attribute to enhance responsive image functionality @@ -434,7 +501,7 @@ function twentysixteen_post_thumbnail_sizes_attr( $attr, $attachment, $size ) { } return $attr; } -add_filter( 'wp_get_attachment_image_attributes', 'twentysixteen_post_thumbnail_sizes_attr', 10, 3 ); +add_filter( 'wp_get_attachment_image_attributes', 'twentysixteen_post_thumbnail_sizes_attr', 10 , 3 ); /** * Modifies tag cloud widget arguments to display all tags in the same font size |