1 | <?php |
---|
2 | /** |
---|
3 | * Custom header implementation |
---|
4 | * |
---|
5 | * @link https://codex.wordpress.org/Custom_Headers |
---|
6 | * |
---|
7 | * @package WordPress |
---|
8 | * @subpackage Twenty_Seventeen |
---|
9 | * @since Twenty Seventeen 1.0 |
---|
10 | */ |
---|
11 | |
---|
12 | /** |
---|
13 | * Set up the WordPress core custom header feature. |
---|
14 | * |
---|
15 | * @uses twentyseventeen_header_style() |
---|
16 | */ |
---|
17 | function twentyseventeen_custom_header_setup() { |
---|
18 | |
---|
19 | add_theme_support( |
---|
20 | 'custom-header', |
---|
21 | /** |
---|
22 | * Filters Twenty Seventeen custom-header support arguments. |
---|
23 | * |
---|
24 | * @since Twenty Seventeen 1.0 |
---|
25 | * |
---|
26 | * @param array $args { |
---|
27 | * An array of custom-header support arguments. |
---|
28 | * |
---|
29 | * @type string $default-image Default image of the header. |
---|
30 | * @type int $width Width in pixels of the custom header image. Default 954. |
---|
31 | * @type int $height Height in pixels of the custom header image. Default 1300. |
---|
32 | * @type string $flex-height Flex support for height of header. |
---|
33 | * @type string $video Video support for header. |
---|
34 | * @type string $wp-head-callback Callback function used to styles the header image and text |
---|
35 | * displayed on the blog. |
---|
36 | * } |
---|
37 | */ |
---|
38 | apply_filters( |
---|
39 | 'twentyseventeen_custom_header_args', |
---|
40 | array( |
---|
41 | 'default-image' => get_parent_theme_file_uri( '/assets/images/header.jpg' ), |
---|
42 | 'width' => 2000, |
---|
43 | 'height' => 1200, |
---|
44 | 'flex-height' => true, |
---|
45 | 'video' => true, |
---|
46 | 'wp-head-callback' => 'twentyseventeen_header_style', |
---|
47 | ) |
---|
48 | ) |
---|
49 | ); |
---|
50 | |
---|
51 | register_default_headers( |
---|
52 | array( |
---|
53 | 'default-image' => array( |
---|
54 | 'url' => '%s/assets/images/header.jpg', |
---|
55 | 'thumbnail_url' => '%s/assets/images/header.jpg', |
---|
56 | 'description' => __( 'Default Header Image', 'twentyseventeen' ), |
---|
57 | ), |
---|
58 | ) |
---|
59 | ); |
---|
60 | } |
---|
61 | add_action( 'after_setup_theme', 'twentyseventeen_custom_header_setup' ); |
---|
62 | |
---|
63 | if ( ! function_exists( 'twentyseventeen_header_style' ) ) : |
---|
64 | /** |
---|
65 | * Styles the header image and text displayed on the blog. |
---|
66 | * |
---|
67 | * @see twentyseventeen_custom_header_setup(). |
---|
68 | */ |
---|
69 | function twentyseventeen_header_style() { |
---|
70 | $header_text_color = get_header_textcolor(); |
---|
71 | |
---|
72 | // If no custom options for text are set, let's bail. |
---|
73 | // get_header_textcolor() options: add_theme_support( 'custom-header' ) is default, hide text (returns 'blank') or any hex value. |
---|
74 | if ( get_theme_support( 'custom-header', 'default-text-color' ) === $header_text_color ) { |
---|
75 | return; |
---|
76 | } |
---|
77 | |
---|
78 | // If we get this far, we have custom styles. Let's do this. |
---|
79 | ?> |
---|
80 | <style id="twentyseventeen-custom-header-styles" type="text/css"> |
---|
81 | <?php |
---|
82 | // Has the text been hidden? |
---|
83 | if ( 'blank' === $header_text_color ) : |
---|
84 | ?> |
---|
85 | .site-title, |
---|
86 | .site-description { |
---|
87 | position: absolute; |
---|
88 | clip: rect(1px, 1px, 1px, 1px); |
---|
89 | } |
---|
90 | <?php |
---|
91 | // If the user has set a custom color for the text use that. |
---|
92 | else : |
---|
93 | ?> |
---|
94 | .site-title a, |
---|
95 | .colors-dark .site-title a, |
---|
96 | .colors-custom .site-title a, |
---|
97 | body.has-header-image .site-title a, |
---|
98 | body.has-header-video .site-title a, |
---|
99 | body.has-header-image.colors-dark .site-title a, |
---|
100 | body.has-header-video.colors-dark .site-title a, |
---|
101 | body.has-header-image.colors-custom .site-title a, |
---|
102 | body.has-header-video.colors-custom .site-title a, |
---|
103 | .site-description, |
---|
104 | .colors-dark .site-description, |
---|
105 | .colors-custom .site-description, |
---|
106 | body.has-header-image .site-description, |
---|
107 | body.has-header-video .site-description, |
---|
108 | body.has-header-image.colors-dark .site-description, |
---|
109 | body.has-header-video.colors-dark .site-description, |
---|
110 | body.has-header-image.colors-custom .site-description, |
---|
111 | body.has-header-video.colors-custom .site-description { |
---|
112 | color: #<?php echo esc_attr( $header_text_color ); ?>; |
---|
113 | } |
---|
114 | <?php endif; ?> |
---|
115 | </style> |
---|
116 | <?php |
---|
117 | } |
---|
118 | endif; // End of twentyseventeen_header_style(). |
---|
119 | |
---|
120 | /** |
---|
121 | * Customize video play/pause button in the custom header. |
---|
122 | * |
---|
123 | * @param array $settings Video settings. |
---|
124 | * @return array The filtered video settings. |
---|
125 | */ |
---|
126 | function twentyseventeen_video_controls( $settings ) { |
---|
127 | /* translators: Hidden accessibility text. */ |
---|
128 | $settings['l10n']['play'] = '<span class="screen-reader-text">' . __( 'Play background video', 'twentyseventeen' ) . '</span>' . twentyseventeen_get_svg( array( 'icon' => 'play' ) ); |
---|
129 | /* translators: Hidden accessibility text. */ |
---|
130 | $settings['l10n']['pause'] = '<span class="screen-reader-text">' . __( 'Pause background video', 'twentyseventeen' ) . '</span>' . twentyseventeen_get_svg( array( 'icon' => 'pause' ) ); |
---|
131 | return $settings; |
---|
132 | } |
---|
133 | add_filter( 'header_video_settings', 'twentyseventeen_video_controls' ); |
---|