Diff: STRATO-apps/wordpress_03/app/wp-includes/post-thumbnail-template.php
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
<?php
2
+
/**
3
+
* WordPress Post Thumbnail Template Functions.
4
+
*
5
+
* Support for post thumbnails.
6
+
* Theme's functions.php must call add_theme_support( 'post-thumbnails' ) to use these.
7
+
*
8
+
* @package WordPress
9
+
* @subpackage Template
10
+
*/
11
+
12
+
/**
13
+
* Determines whether a post has an image attached.
14
+
*
15
+
* For more information on this and similar theme functions, check out
16
+
* the {@link https://developer.wordpress.org/themes/basics/conditional-tags/
17
+
* Conditional Tags} article in the Theme Developer Handbook.
18
+
*
19
+
* @since 2.9.0
20
+
* @since 4.4.0 `$post` can be a post ID or WP_Post object.
21
+
*
22
+
* @param int|WP_Post|null $post Optional. Post ID or WP_Post object. Default is global `$post`.
23
+
* @return bool Whether the post has an image attached.
24
+
*/
25
+
function has_post_thumbnail( $post = null ) {
26
+
$thumbnail_id = get_post_thumbnail_id( $post );
27
+
$has_thumbnail = (bool) $thumbnail_id;
28
+
29
+
/**
30
+
* Filters whether a post has a post thumbnail.
31
+
*
32
+
* @since 5.1.0
33
+
*
34
+
* @param bool $has_thumbnail true if the post has a post thumbnail, otherwise false.
35
+
* @param int|WP_Post|null $post Post ID or WP_Post object. Default is global `$post`.
36
+
* @param int|false $thumbnail_id Post thumbnail ID or false if the post does not exist.
37
+
*/
38
+
return (bool) apply_filters( 'has_post_thumbnail', $has_thumbnail, $post, $thumbnail_id );
39
+
}
40
+
41
+
/**
42
+
* Retrieves the post thumbnail ID.
43
+
*
44
+
* @since 2.9.0
45
+
* @since 4.4.0 `$post` can be a post ID or WP_Post object.
46
+
* @since 5.5.0 The return value for a non-existing post
47
+
* was changed to false instead of an empty string.
48
+
*
49
+
* @param int|WP_Post|null $post Optional. Post ID or WP_Post object. Default is global `$post`.
50
+
* @return int|false Post thumbnail ID (which can be 0 if the thumbnail is not set),
51
+
* or false if the post does not exist.
52
+
*/
53
+
function get_post_thumbnail_id( $post = null ) {
54
+
$post = get_post( $post );
55
+
56
+
if ( ! $post ) {
57
+
return false;
58
+
}
59
+
60
+
$thumbnail_id = (int) get_post_meta( $post->ID, '_thumbnail_id', true );
61
+
62
+
/**
63
+
* Filters the post thumbnail ID.
64
+
*
65
+
* @since 5.9.0
66
+
*
67
+
* @param int|false $thumbnail_id Post thumbnail ID or false if the post does not exist.
68
+
* @param int|WP_Post|null $post Post ID or WP_Post object. Default is global `$post`.
69
+
*/
70
+
return (int) apply_filters( 'post_thumbnail_id', $thumbnail_id, $post );
71
+
}
72
+
73
+
/**
74
+
* Displays the post thumbnail.
75
+
*
76
+
* When a theme adds 'post-thumbnail' support, a special 'post-thumbnail' image size
77
+
* is registered, which differs from the 'thumbnail' image size managed via the
78
+
* Settings > Media screen.
79
+
*
80
+
* When using the_post_thumbnail() or related functions, the 'post-thumbnail' image
81
+
* size is used by default, though a different size can be specified instead as needed.
82
+
*
83
+
* @since 2.9.0
84
+
*
85
+
* @see get_the_post_thumbnail()
86
+
*
87
+
* @param string|int[] $size Optional. Image size. Accepts any registered image size name, or an array of
88
+
* width and height values in pixels (in that order). Default 'post-thumbnail'.
89
+
* @param string|array $attr Optional. Query string or array of attributes. Default empty.
90
+
*/
91
+
function the_post_thumbnail( $size = 'post-thumbnail', $attr = '' ) {
92
+
echo get_the_post_thumbnail( null, $size, $attr );
93
+
}
94
+
95
+
/**
96
+
* Updates cache for thumbnails in the current loop.
97
+
*
98
+
* @since 3.2.0
99
+
*
100
+
* @global WP_Query $wp_query WordPress Query object.
101
+
*
102
+
* @param WP_Query|null $wp_query Optional. A WP_Query instance. Defaults to the $wp_query global.
103
+
*/
104
+
function update_post_thumbnail_cache( $wp_query = null ) {
105
+
if ( ! $wp_query ) {
106
+
$wp_query = $GLOBALS['wp_query'];
107
+
}
108
+
109
+
if ( $wp_query->thumbnails_cached ) {
110
+
return;
111
+
}
112
+
113
+
$thumb_ids = array();
114
+
115
+
/*
116
+
* $wp_query may contain an array of post objects or post IDs.
117
+
*
118
+
* This ensures the cache is primed for all post objects to avoid
119
+
* `get_post()` calls in `get_the_post_thumbnail()` triggering an
120
+
* additional database call for each post.
121
+
*/
122
+
$parent_post_ids = array();
123
+
foreach ( $wp_query->posts as $post ) {
124
+
if ( $post instanceof WP_Post ) {
125
+
$parent_post_ids[] = $post->ID;
126
+
} elseif ( is_int( $post ) ) {
127
+
$parent_post_ids[] = $post;
128
+
}
129
+
}
130
+
_prime_post_caches( $parent_post_ids, false, true );
131
+
132
+
foreach ( $wp_query->posts as $post ) {
133
+
$id = get_post_thumbnail_id( $post );
134
+
if ( $id ) {
135
+
$thumb_ids[] = $id;
136
+
}
137
+
}
138
+
139
+
if ( ! empty( $thumb_ids ) ) {
140
+
_prime_post_caches( $thumb_ids, false, true );
141
+
}
142
+
143
+
$wp_query->thumbnails_cached = true;
144
+
}
145
+
146
+
/**
147
+
* Retrieves the post thumbnail.
148
+
*
149
+
* When a theme adds 'post-thumbnail' support, a special 'post-thumbnail' image size
150
+
* is registered, which differs from the 'thumbnail' image size managed via the
151
+
* Settings > Media screen.
152
+
*
153
+
* When using the_post_thumbnail() or related functions, the 'post-thumbnail' image
154
+
* size is used by default, though a different size can be specified instead as needed.
155
+
*
156
+
* @since 2.9.0
157
+
* @since 4.4.0 `$post` can be a post ID or WP_Post object.
158
+
*
159
+
* @param int|WP_Post|null $post Optional. Post ID or WP_Post object. Default is global `$post`.
160
+
* @param string|int[] $size Optional. Image size. Accepts any registered image size name, or an array of
161
+
* width and height values in pixels (in that order). Default 'post-thumbnail'.
162
+
* @param string|array $attr Optional. Query string or array of attributes. Default empty.
163
+
* @return string The post thumbnail image tag.
164
+
*/
165
+
function get_the_post_thumbnail( $post = null, $size = 'post-thumbnail', $attr = '' ) {
166
+
$post = get_post( $post );
167
+
168
+
if ( ! $post ) {
169
+
return '';
170
+
}
171
+
172
+
$post_thumbnail_id = get_post_thumbnail_id( $post );
173
+
174
+
/**
175
+
* Filters the post thumbnail size.
176
+
*
177
+
* @since 2.9.0
178
+
* @since 4.9.0 Added the `$post_id` parameter.
179
+
*
180
+
* @param string|int[] $size Requested image size. Can be any registered image size name, or
181
+
* an array of width and height values in pixels (in that order).
182
+
* @param int $post_id The post ID.
183
+
*/
184
+
$size = apply_filters( 'post_thumbnail_size', $size, $post->ID );
185
+
186
+
if ( $post_thumbnail_id ) {
187
+
188
+
/**
189
+
* Fires before fetching the post thumbnail HTML.
190
+
*
191
+
* Provides "just in time" filtering of all filters in wp_get_attachment_image().
192
+
*
193
+
* @since 2.9.0
194
+
*
195
+
* @param int $post_id The post ID.
196
+
* @param int $post_thumbnail_id The post thumbnail ID.
197
+
* @param string|int[] $size Requested image size. Can be any registered image size name, or
198
+
* an array of width and height values in pixels (in that order).
199
+
*/
200
+
do_action( 'begin_fetch_post_thumbnail_html', $post->ID, $post_thumbnail_id, $size );
201
+
202
+
if ( in_the_loop() ) {
203
+
update_post_thumbnail_cache();
204
+
}
205
+
206
+
$html = wp_get_attachment_image( $post_thumbnail_id, $size, false, $attr );
207
+
208
+
/**
209
+
* Fires after fetching the post thumbnail HTML.
210
+
*
211
+
* @since 2.9.0
212
+
*
213
+
* @param int $post_id The post ID.
214
+
* @param int $post_thumbnail_id The post thumbnail ID.
215
+
* @param string|int[] $size Requested image size. Can be any registered image size name, or
216
+
* an array of width and height values in pixels (in that order).
217
+
*/
218
+
do_action( 'end_fetch_post_thumbnail_html', $post->ID, $post_thumbnail_id, $size );
219
+
220
+
} else {
221
+
$html = '';
222
+
}
223
+
224
+
/**
225
+
* Filters the post thumbnail HTML.
226
+
*
227
+
* @since 2.9.0
228
+
*
229
+
* @param string $html The post thumbnail HTML.
230
+
* @param int $post_id The post ID.
231
+
* @param int $post_thumbnail_id The post thumbnail ID, or 0 if there isn't one.
232
+
* @param string|int[] $size Requested image size. Can be any registered image size name, or
233
+
* an array of width and height values in pixels (in that order).
234
+
* @param string|array $attr Query string or array of attributes.
235
+
*/
236
+
return apply_filters( 'post_thumbnail_html', $html, $post->ID, $post_thumbnail_id, $size, $attr );
237
+
}
238
+
239
+
/**
240
+
* Returns the post thumbnail URL.
241
+
*
242
+
* @since 4.4.0
243
+
*
244
+
* @param int|WP_Post|null $post Optional. Post ID or WP_Post object. Default is global `$post`.
245
+
* @param string|int[] $size Optional. Registered image size to retrieve the source for or a flat array
246
+
* of height and width dimensions. Default 'post-thumbnail'.
247
+
* @return string|false Post thumbnail URL or false if no image is available. If `$size` does not match
248
+
* any registered image size, the original image URL will be returned.
249
+
*/
250
+
function get_the_post_thumbnail_url( $post = null, $size = 'post-thumbnail' ) {
251
+
$post_thumbnail_id = get_post_thumbnail_id( $post );
252
+
253
+
if ( ! $post_thumbnail_id ) {
254
+
return false;
255
+
}
256
+
257
+
$thumbnail_url = wp_get_attachment_image_url( $post_thumbnail_id, $size );
258
+
259
+
/**
260
+
* Filters the post thumbnail URL.
261
+
*
262
+
* @since 5.9.0
263
+
*
264
+
* @param string|false $thumbnail_url Post thumbnail URL or false if the post does not exist.
265
+
* @param int|WP_Post|null $post Post ID or WP_Post object. Default is global `$post`.
266
+
* @param string|int[] $size Registered image size to retrieve the source for or a flat array
267
+
* of height and width dimensions. Default 'post-thumbnail'.
268
+
*/
269
+
return apply_filters( 'post_thumbnail_url', $thumbnail_url, $post, $size );
270
+
}
271
+
272
+
/**
273
+
* Displays the post thumbnail URL.
274
+
*
275
+
* @since 4.4.0
276
+
*
277
+
* @param string|int[] $size Optional. Image size to use. Accepts any valid image size,
278
+
* or an array of width and height values in pixels (in that order).
279
+
* Default 'post-thumbnail'.
280
+
*/
281
+
function the_post_thumbnail_url( $size = 'post-thumbnail' ) {
282
+
$url = get_the_post_thumbnail_url( null, $size );
283
+
284
+
if ( $url ) {
285
+
echo esc_url( $url );
286
+
}
287
+
}
288
+
289
+
/**
290
+
* Returns the post thumbnail caption.
291
+
*
292
+
* @since 4.6.0
293
+
*
294
+
* @param int|WP_Post|null $post Optional. Post ID or WP_Post object. Default is global `$post`.
295
+
* @return string Post thumbnail caption.
296
+
*/
297
+
function get_the_post_thumbnail_caption( $post = null ) {
298
+
$post_thumbnail_id = get_post_thumbnail_id( $post );
299
+
300
+
if ( ! $post_thumbnail_id ) {
301
+
return '';
302
+
}
303
+
304
+
$caption = wp_get_attachment_caption( $post_thumbnail_id );
305
+
306
+
if ( ! $caption ) {
307
+
$caption = '';
308
+
}
309
+
310
+
return $caption;
311
+
}
312
+
313
+
/**
314
+
* Displays the post thumbnail caption.
315
+
*
316
+
* @since 4.6.0
317
+
*
318
+
* @param int|WP_Post|null $post Optional. Post ID or WP_Post object. Default is global `$post`.
319
+
*/
320
+
function the_post_thumbnail_caption( $post = null ) {
321
+
/**
322
+
* Filters the displayed post thumbnail caption.
323
+
*
324
+
* @since 4.6.0
325
+
*
326
+
* @param string $caption Caption for the given attachment.
327
+
*/
328
+
echo apply_filters( 'the_post_thumbnail_caption', get_the_post_thumbnail_caption( $post ) );
329
+
}
330
+