PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.0-beta
Jetpack – WP Security, Backup, Speed, & Growth v16.0-beta
16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / modules / theme-tools / site-logo / inc / functions.php
jetpack / modules / theme-tools / site-logo / inc Last commit date
class-site-logo.php 7 months ago compat.php 5 years ago functions.php 1 year ago
functions.php
209 lines
1 <?php
2 /**
3 * Functions and template tags for Site Logo theme tool.
4 *
5 * @package automattic/jetpack
6 */
7
8 /**
9 * Retrieve the site logo URL or ID (URL by default). Pass in the string 'id' for ID.
10 *
11 * @uses get_option()
12 * @uses esc_url_raw()
13 * @uses set_url_scheme()
14 * @param string $show 'url' or 'id' for site logo.
15 * @return mixed The URL or ID of our site logo, false if not set
16 * @since 1.0
17 */
18 function jetpack_get_site_logo( $show = 'url' ) {
19 $logo_id = site_logo()->logo;
20
21 // Return false if no logo is set
22 if ( ! $logo_id ) {
23 return false;
24 }
25
26 // Return the ID if specified, otherwise return the URL by default
27 if ( 'id' === $show ) {
28 return $logo_id;
29 } else {
30 $logo_url = wp_get_attachment_url( $logo_id );
31 return esc_url_raw( set_url_scheme( $logo_url ) );
32 }
33 }
34
35 /**
36 * Retrieve an array of the dimensions of the Site Logo.
37 *
38 * @uses Site_Logo::theme_size()
39 * @uses get_option( 'thumbnail_size_w' )
40 * @uses get_option( 'thumbnail_size_h' )
41 * @uses global $_wp_additional_image_sizes;
42 *
43 * @since 3.6.0
44 *
45 * @return array $dimensions {
46 * An array of dimensions of the Site Logo.
47 *
48 * @type string $width Width of the logo in pixels.
49 * @type string $height Height of the logo in pixels.
50 * }
51 */
52 function jetpack_get_site_logo_dimensions() {
53 // Get the image size to use with the logo.
54 $size = site_logo()->theme_size();
55
56 // If the size is the default `thumbnail`, get its dimensions. Otherwise, get them from $_wp_additional_image_sizes
57 if ( empty( $size ) ) {
58 return false;
59 } elseif ( 'thumbnail' === $size ) {
60 $dimensions = array(
61 'width' => get_option( 'thumbnail_size_w' ),
62 'height' => get_option( 'thumbnail_size_h' ),
63 );
64 } else {
65 global $_wp_additional_image_sizes;
66
67 if ( ! isset( $_wp_additional_image_sizes[ $size ] ) ) {
68 return false;
69 }
70
71 $dimensions = array(
72 'width' => $_wp_additional_image_sizes[ $size ]['width'],
73 'height' => $_wp_additional_image_sizes[ $size ]['height'],
74 );
75 }
76
77 return $dimensions;
78 }
79
80 /**
81 * Determine if a site logo is assigned or not.
82 *
83 * @uses get_option
84 * @return boolean True if there is an active logo, false otherwise
85 */
86 function jetpack_has_site_logo() {
87 return site_logo()->has_site_logo();
88 }
89
90 /**
91 * Output an <img> tag of the site logo, at the size specified
92 * in the theme's add_theme_support() declaration.
93 *
94 * @uses Site_Logo::logo
95 * @uses Site_Logo::theme_size()
96 * @uses jetpack_has_site_logo()
97 * @uses jetpack_is_customize_preview()
98 * @uses esc_url()
99 * @uses home_url()
100 * @uses esc_attr()
101 * @uses wp_get_attachment_image()
102 * @uses apply_filters()
103 * @since 1.0
104 */
105 function jetpack_the_site_logo() {
106 $size = site_logo()->theme_size();
107
108 // If no logo is set, but we're in the Customizer, leave a placeholder (needed for the live preview).
109 if (
110 ! jetpack_has_site_logo()
111 && jetpack_is_customize_preview()
112 ) {
113 /*
114 * Reason: the output is escaped in the sprintf.
115 * phpcs:disable WordPress.Security.EscapeOutput
116 */
117 /** This filter is documented in modules/theme-tools/site-logo/inc/functions.php */
118 echo apply_filters(
119 'jetpack_the_site_logo',
120 sprintf(
121 '<a href="%1$s" class="site-logo-link" style="display:none;"><img class="site-logo" data-size="%2$s" /></a>',
122 esc_url( home_url( '/' ) ),
123 esc_attr( $size )
124 ),
125 array(),
126 $size
127 );
128 /* phpcs:enable WordPress.Security.EscapeOutput */
129 return;
130 }
131
132 // Check for WP 4.5 Site Logo and Jetpack logo.
133 $logo_id = get_theme_mod( 'custom_logo' );
134 // Get the option directly so the updated logo can be injected into customizer previews.
135 $jetpack_logo_id = get_option( 'site_logo' );
136
137 // Use WP Core logo if present and is an id (of an attachment), otherwise use Jetpack's.
138 if ( ! is_numeric( $logo_id ) && $jetpack_logo_id ) {
139 $logo_id = $jetpack_logo_id;
140 }
141
142 /*
143 * Reason: the output is escaped in the sprintf.
144 * phpcs:disable WordPress.Security.EscapeOutput
145 */
146 /**
147 * Filter the Site Logo output.
148 *
149 * @module theme-tools
150 *
151 * @since 3.2.0
152 *
153 * @param string $html Site Logo HTML output.
154 * @param array $jetpack_logo Array of Site Logo details.
155 * @param string $size Size specified in add_theme_support declaration, or 'thumbnail' default.
156 */
157 echo apply_filters(
158 'jetpack_the_site_logo',
159 sprintf(
160 '<a href="%1$s" class="site-logo-link" rel="home" itemprop="url">%2$s</a>',
161 esc_url( home_url( '/' ) ),
162 wp_get_attachment_image(
163 $logo_id,
164 $size,
165 false,
166 array(
167 'class' => "site-logo attachment-$size",
168 'data-size' => $size,
169 'itemprop' => 'logo',
170 )
171 )
172 ),
173 // Return array format in filter for back compatibility.
174 array(
175 'id' => $jetpack_logo_id,
176 'url' => wp_get_attachment_url( $jetpack_logo_id ),
177 'sizes' => array(),
178 ),
179 $size
180 );
181 /* phpcs:enable WordPress.Security.EscapeOutput */
182 }
183
184 /**
185 * Whether the site is being previewed in the Customizer.
186 * Duplicate of core function until 4.0 is released.
187 *
188 * @global WP_Customize_Manager $wp_customize Customizer instance.
189 * @return bool True if the site is being previewed in the Customizer, false otherwise.
190 */
191 function jetpack_is_customize_preview() {
192 global $wp_customize;
193 // @phan-suppress-next-line PhanTypeMismatchArgumentInternal -- this continues to work as expected, but given the feature deprecation no extra work is needed.
194 return is_a( $wp_customize, 'WP_Customize_Manager' ) && $wp_customize->is_preview();
195 }
196
197 /**
198 * Sanitize the string of classes used for header text.
199 * Limit to A-Z,a-z,0-9,(space),(comma),_,-
200 *
201 * @param string $classes Unsanitized string of CSS classes.
202 * @return string Sanitized string of CSS classes.
203 */
204 function jetpack_sanitize_header_text_classes( $classes ) {
205 $classes = preg_replace( '/[^A-Za-z0-9\,\ ._-]/', '', $classes );
206
207 return $classes;
208 }
209