PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3-a.7
Jetpack – WP Security, Backup, Speed, & Growth v16.3-a.7
16.3-a.5 16.3-a.7 16.3-a.3 16.3-a.1 16.2 16.2-beta 12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 All 506 releases
← All changes | modules/theme-tools/content-options/featured-images-fallback.php +106 -96 13.8.3 → 16.3-a.7 View file →
@@ -4,8 +4,14 @@
4 4 *
5 5 * @package automattic/jetpack
6 6 */
7 7
8 +use Automattic\Jetpack\Post_Media\Images;
9 +
10 +if ( ! defined( 'ABSPATH' ) ) {
11 + exit( 0 );
12 +}
13 +
8 14 if ( ! function_exists( 'jetpack_featured_images_fallback_get_image' ) ) {
9 15
10 16 /**
11 17 * Get one image from a specified post in the following order:
@@ -11,8 +17,9 @@
11 17 * Get one image from a specified post in the following order:
12 18 * Featured Image then first image from the_content HTML
13 19 * and filter the post_thumbnail_html
14 20 *
21 + * @deprecated 13.9 Moved to Classic Theme Helper package.
15 22 * @param string $html The HTML for the image markup.
16 23 * @param int $post_id The post ID to check.
17 24 * @param int $post_thumbnail_id The ID of the featured image.
18 25 * @param string $size The image size to return, defaults to 'post-thumbnail'.
@@ -19,9 +26,10 @@
19 26 * @param string|array $attr Optional. Query string or array of attributes.
20 27 *
21 28 * @return string $html Thumbnail image with markup.
22 29 */
23 - function jetpack_featured_images_fallback_get_image( $html, $post_id, $post_thumbnail_id, $size, $attr ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
30 + function jetpack_featured_images_fallback_get_image( $html, $post_id, $post_thumbnail_id, $size, $attr ) {
31 + _deprecated_function( __FUNCTION__, 'jetpack-13.9' );
24 32 $opts = jetpack_featured_images_get_settings();
25 33
26 34 if ( ! empty( $html ) || (bool) 1 !== (bool) $opts['fallback-option'] ) {
27 35 return trim( $html );
@@ -36,98 +44,96 @@
36 44 return trim( $html );
37 45 }
38 46 }
39 47
40 - if ( class_exists( 'Jetpack_PostImages' ) ) {
41 - global $_wp_additional_image_sizes;
48 + global $_wp_additional_image_sizes;
42 49
43 - $args = array(
44 - 'from_thumbnail' => false,
45 - 'from_slideshow' => true,
46 - 'from_gallery' => true,
47 - 'from_attachment' => false,
48 - );
50 + $args = array(
51 + 'from_thumbnail' => false,
52 + 'from_slideshow' => true,
53 + 'from_gallery' => true,
54 + 'from_attachment' => false,
55 + );
49 56
50 - $image = Jetpack_PostImages::get_image( $post_id, $args );
57 + $image = Images::get_image( $post_id, $args );
51 58
52 - if ( ! empty( $image ) ) {
53 - $image['width'] = '';
54 - $image['height'] = '';
55 - $image['crop'] = '';
59 + if ( ! empty( $image ) ) {
60 + $image['width'] = '';
61 + $image['height'] = '';
62 + $image['crop'] = '';
56 63
57 - if ( array_key_exists( $size, $_wp_additional_image_sizes ) ) {
58 - $image['width'] = $_wp_additional_image_sizes[ $size ]['width'];
59 - $image['height'] = $_wp_additional_image_sizes[ $size ]['height'];
60 - $image['crop'] = $_wp_additional_image_sizes[ $size ]['crop'];
61 - }
64 + if ( array_key_exists( $size, $_wp_additional_image_sizes ) ) {
65 + $image['width'] = $_wp_additional_image_sizes[ $size ]['width'];
66 + $image['height'] = $_wp_additional_image_sizes[ $size ]['height'];
67 + $image['crop'] = $_wp_additional_image_sizes[ $size ]['crop'];
68 + }
62 69
63 - // Force `crop` to be a simple boolean, to avoid dealing with WP crop positions.
64 - $image['crop'] = boolval( $image['crop'] );
70 + // Force `crop` to be a simple boolean, to avoid dealing with WP crop positions.
71 + $image['crop'] = boolval( $image['crop'] );
65 72
66 - $image_sizes = '';
73 + $image_sizes = '';
67 74
68 - $width = isset( $image['width'] ) ? intval( $image['width'] ) : null;
69 - $height = isset( $image['height'] ) ? intval( $image['height'] ) : null;
75 + $width = isset( $image['width'] ) ? intval( $image['width'] ) : null;
76 + $height = isset( $image['height'] ) ? intval( $image['height'] ) : null;
70 77
71 - if ( ! empty( $image['src_width'] ) && ! empty( $image['src_height'] ) && ! empty( $image['width'] ) && ! empty( $image['height'] ) ) {
72 - $src_width = intval( $image['src_width'] );
73 - $src_height = intval( $image['src_height'] );
78 + if ( ! empty( $image['src_width'] ) && ! empty( $image['src_height'] ) && ! empty( $image['width'] ) && ! empty( $image['height'] ) ) {
79 + $src_width = intval( $image['src_width'] );
80 + $src_height = intval( $image['src_height'] );
74 81
75 - // If we're aware of the source dimensions, calculate the final image height and width.
76 - // This allows us to provide them as attributes in the `<img>` tag, to avoid layout shifts.
77 - // It also allows us to calculate a `srcset`.
78 - if ( $image['crop'] ) {
79 - // If we're cropping, the final dimensions are calculated independently of each other.
80 - $width = min( $width, $src_width );
81 - $height = min( $height, $src_height );
82 - } else {
83 - // If we're not cropping, we need to preserve aspect ratio.
84 - $dims = wp_constrain_dimensions( $src_width, $src_height, $width, $height );
85 - $width = $dims[0];
86 - $height = $dims[1];
87 - }
82 + // If we're aware of the source dimensions, calculate the final image height and width.
83 + // This allows us to provide them as attributes in the `<img>` tag, to avoid layout shifts.
84 + // It also allows us to calculate a `srcset`.
85 + if ( $image['crop'] ) {
86 + // If we're cropping, the final dimensions are calculated independently of each other.
87 + $width = min( $width, $src_width );
88 + $height = min( $height, $src_height );
89 + } else {
90 + // If we're not cropping, we need to preserve aspect ratio.
91 + $dims = wp_constrain_dimensions( $src_width, $src_height, $width, $height );
92 + $width = $dims[0];
93 + $height = $dims[1];
94 + }
88 95
89 - $image_src = Jetpack_PostImages::fit_image_url( $image['src'], $width, $height );
90 - $image_srcset = Jetpack_PostImages::generate_cropped_srcset( $image, $width, $height, true );
91 - $image_sizes = 'min(' . $width . 'px, 100vw)';
92 - } else {
93 - // If we're not aware of the source dimensions, leave the size calculations to the CDN, and
94 - // fall back to a simpler `<img>` tag without `width`/`height` or `srcset`.
95 - $image_src = Jetpack_PostImages::fit_image_url( $image['src'], $image['width'], $image['height'] );
96 + $image_src = Images::fit_image_url( $image['src'], $width, $height );
97 + $image_srcset = Images::generate_cropped_srcset( $image, $width, $height, true );
98 + $image_sizes = 'min(' . $width . 'px, 100vw)';
99 + } else {
100 + // If we're not aware of the source dimensions, leave the size calculations to the CDN, and
101 + // fall back to a simpler `<img>` tag without `width`/`height` or `srcset`.
102 + $image_src = Images::fit_image_url( $image['src'], $image['width'], $image['height'] );
96 103
97 - // Use the theme's crop setting rather than forcing to true.
98 - $image_src = add_query_arg( 'crop', $image['crop'], $image_src );
104 + // Use the theme's crop setting rather than forcing to true.
105 + $image_src = add_query_arg( 'crop', $image['crop'], $image_src );
99 106
100 - $image_srcset = null;
101 - $image_sizes = null;
102 - }
107 + $image_srcset = null;
108 + $image_sizes = null;
109 + }
103 110
104 - $default_attr = array(
105 - 'srcset' => $image_srcset,
106 - 'sizes' => $image_sizes,
107 - 'loading' => is_singular() ? 'eager' : 'lazy',
108 - 'decoding' => 'async',
109 - 'title' => wp_strip_all_tags( get_the_title() ),
110 - 'alt' => '',
111 - 'class' => "attachment-$size wp-post-image",
112 - );
111 + $default_attr = array(
112 + 'srcset' => $image_srcset,
113 + 'sizes' => $image_sizes,
114 + 'loading' => is_singular() ? 'eager' : 'lazy',
115 + 'decoding' => 'async',
116 + 'title' => wp_strip_all_tags( get_the_title() ),
117 + 'alt' => '',
118 + 'class' => "attachment-$size wp-post-image",
119 + );
113 120
114 - $image_attr = wp_parse_args( $attr, $default_attr );
115 - $hwstring = image_hwstring( $width, $height );
121 + $image_attr = wp_parse_args( $attr, $default_attr );
122 + $hwstring = image_hwstring( $width, $height );
116 123
117 - $html = rtrim( "<img $hwstring" );
118 - $html .= ' src="' . esc_url( $image_src ) . '"';
124 + $html = rtrim( "<img $hwstring" );
125 + $html .= ' src="' . esc_url( $image_src ) . '"';
119 126
120 - foreach ( $image_attr as $name => $value ) {
121 - if ( $value ) {
122 - $html .= " $name=" . '"' . esc_attr( $value ) . '"';
123 - }
127 + foreach ( $image_attr as $name => $value ) {
128 + if ( $value ) {
129 + $html .= " $name=" . '"' . esc_attr( $value ) . '"';
124 130 }
131 + }
125 132
126 - $html .= ' />';
133 + $html .= ' />';
127 134
128 - return trim( $html );
129 - }
135 + return trim( $html );
130 136 }
131 137
132 138 return trim( $html );
133 139 }
@@ -140,8 +146,9 @@
140 146 /**
141 147 * Get URL of one image from a specified post in the following order:
142 148 * Featured Image then first image from the_content HTML
143 149 *
150 + * @deprecated 13.9 Moved to Classic Theme Helper package.
144 151 * @param int $post_id The post ID to check.
145 152 * @param int $post_thumbnail_id The ID of the featured image.
146 153 * @param string $size The image size to return, defaults to 'post-thumbnail'.
147 154 *
@@ -147,8 +154,9 @@
147 154 *
148 155 * @return string|null $image_src The URL of the thumbnail image.
149 156 */
150 157 function jetpack_featured_images_fallback_get_image_src( $post_id, $post_thumbnail_id, $size ) {
158 + _deprecated_function( __FUNCTION__, 'jetpack-13.9' );
151 159 $image_src = wp_get_attachment_image_src( $post_thumbnail_id, $size );
152 160 $image_src = ( ! empty( $image_src[0] ) ) ? $image_src[0] : null;
153 161 $opts = jetpack_featured_images_get_settings();
154 162
@@ -162,38 +170,36 @@
162 170 return esc_url( $image_src );
163 171 }
164 172 }
165 173
166 - if ( class_exists( 'Jetpack_PostImages' ) ) {
167 - global $_wp_additional_image_sizes;
174 + global $_wp_additional_image_sizes;
168 175
169 - $args = array(
170 - 'from_thumbnail' => false,
171 - 'from_slideshow' => true,
172 - 'from_gallery' => true,
173 - 'from_attachment' => false,
174 - );
176 + $args = array(
177 + 'from_thumbnail' => false,
178 + 'from_slideshow' => true,
179 + 'from_gallery' => true,
180 + 'from_attachment' => false,
181 + );
175 182
176 - $image = Jetpack_PostImages::get_image( $post_id, $args );
183 + $image = Images::get_image( $post_id, $args );
177 184
178 - if ( ! empty( $image ) ) {
179 - $image['width'] = '';
180 - $image['height'] = '';
181 - $image['crop'] = '';
185 + if ( ! empty( $image ) ) {
186 + $image['width'] = '';
187 + $image['height'] = '';
188 + $image['crop'] = '';
182 189
183 - if ( array_key_exists( $size, $_wp_additional_image_sizes ) ) {
184 - $image['width'] = $_wp_additional_image_sizes[ $size ]['width'];
185 - $image['height'] = $_wp_additional_image_sizes[ $size ]['height'];
186 - $image['crop'] = $_wp_additional_image_sizes[ $size ]['crop'];
187 - }
190 + if ( array_key_exists( $size, $_wp_additional_image_sizes ) ) {
191 + $image['width'] = $_wp_additional_image_sizes[ $size ]['width'];
192 + $image['height'] = $_wp_additional_image_sizes[ $size ]['height'];
193 + $image['crop'] = $_wp_additional_image_sizes[ $size ]['crop'];
194 + }
188 195
189 - $image_src = Jetpack_PostImages::fit_image_url( $image['src'], $image['width'], $image['height'] );
196 + $image_src = Images::fit_image_url( $image['src'], $image['width'], $image['height'] );
190 197
191 - // Use the theme's crop setting rather than forcing to true.
192 - $image_src = add_query_arg( 'crop', $image['crop'], $image_src );
198 + // Use the theme's crop setting rather than forcing to true.
199 + $image_src = add_query_arg( 'crop', $image['crop'], $image_src );
193 200
194 - return esc_url( $image_src );
195 - }
201 + return esc_url( $image_src );
196 202 }
197 203
198 204 return esc_url( $image_src );
199 205 }
@@ -204,13 +210,15 @@
204 210
205 211 /**
206 212 * Check if post has an image attached, including a fallback.
207 213 *
214 + * @deprecated 13.9 Moved to Classic Theme Helper package.
208 215 * @param int $post The post ID to check.
209 216 *
210 217 * @return bool
211 218 */
212 219 function jetpack_has_featured_image( $post = null ) {
220 + _deprecated_function( __FUNCTION__, 'jetpack-13.9' );
213 221 return (bool) get_the_post_thumbnail( $post );
214 222 }
215 223
216 224 }
@@ -219,15 +227,17 @@
219 227
220 228 /**
221 229 * Adds custom class to the array of post classes.
222 230 *
231 + * @deprecated 13.9 Moved to Classic Theme Helper package.
223 232 * @param array $classes Classes for the post element.
224 - * @param array $class Optional. Comma separated list of additional classes.
233 + * @param array $class Optional. Comma-separated list of additional classes.
225 234 * @param array $post_id Unique The post ID to check.
226 235 *
227 236 * @return array $classes
228 237 */
229 238 function jetpack_featured_images_post_class( $classes, $class, $post_id ) {
239 + _deprecated_function( __FUNCTION__, 'jetpack-13.9' );
230 240 $post_password_required = post_password_required( $post_id );
231 241 $opts = jetpack_featured_images_get_settings();
232 242
233 243 if ( jetpack_has_featured_image( $post_id ) && (bool) 1 === (bool) $opts['fallback-option'] && ! is_attachment() && ! $post_password_required && 'post' === get_post_type() ) {