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 / content-options / blog-display.php
jetpack / modules / theme-tools / content-options Last commit date
author-bio.php 7 months ago blog-display.php 1 month ago customizer.js 1 year ago customizer.php 7 months ago featured-images-fallback.php 2 weeks ago featured-images.php 1 month ago post-details.php 7 months ago
blog-display.php
323 lines
1 <?php
2 /**
3 * Theme Tools: the functions to display Content or Excerpt in a theme.
4 *
5 * @package automattic/jetpack
6 */
7
8 if ( ! defined( 'ABSPATH' ) ) {
9 exit( 0 );
10 }
11
12 /**
13 * If the theme doesn't support 'jetpack-content-options', don't continue.
14 */
15 if ( ! current_theme_supports( 'jetpack-content-options' ) ) {
16 return;
17 }
18
19 /**
20 * Get the Blog Display setting.
21 * If theme is using both 'Content' and 'Excerpt' then this setting will be called 'Mixed'.
22 */
23 $options = get_theme_support( 'jetpack-content-options' );
24 $blog_display = ( ! empty( $options[0]['blog-display'] ) ) ? $options[0]['blog-display'] : null;
25 $blog_display = preg_grep( '/^(content|excerpt)$/', (array) $blog_display );
26 sort( $blog_display );
27 $blog_display = implode( ', ', $blog_display );
28 $blog_display = ( 'content, excerpt' === $blog_display ) ? 'mixed' : $blog_display;
29
30 /**
31 * If the theme doesn't support 'jetpack-content-options[ 'blog-display' ]', don't continue.
32 */
33 if ( ! in_array( $blog_display, array( 'content', 'excerpt', 'mixed' ), true ) ) {
34 return;
35 }
36
37 if ( ! function_exists( 'jetpack_blog_display_custom_excerpt' ) ) {
38
39 /**
40 * Apply Content filters.
41 *
42 * @deprecated 13.9 Moved to Classic Theme Helper package.
43 * @since 9.7.0 Deprecated $content parameter.
44 *
45 * @param string $content Post content. Deprecated.
46 */
47 function jetpack_blog_display_custom_excerpt( $content = '' ) {
48 _deprecated_function( __FUNCTION__, 'jetpack-13.9' );
49 if ( ! empty( $content ) ) {
50 _doing_it_wrong(
51 'jetpack_blog_display_custom_excerpt',
52 esc_html__( 'You do not need to pass a $content parameter anymore.', 'jetpack' ),
53 'jetpack-9.7.0'
54 );
55 }
56
57 $post = get_post();
58 if ( empty( $post ) ) {
59 return '';
60 }
61
62 if ( empty( $post->post_excerpt ) ) {
63 $text = strip_shortcodes( $post->post_content );
64 $text = str_replace( ']]>', ']]&gt;', $text );
65 $text = wp_strip_all_tags( $text );
66 /** This filter is documented in wp-includes/formatting.php */
67 $excerpt_length = apply_filters( 'excerpt_length', 55 );
68 /** This filter is documented in wp-includes/formatting.php */
69 $excerpt_more = apply_filters( 'excerpt_more', ' [...]' );
70
71 /*
72 * translators: If your word count is based on single characters (e.g. East Asian characters),
73 * enter 'characters_excluding_spaces' or 'characters_including_spaces'. Otherwise, enter 'words'.
74 * Do not translate into your own language.
75 */
76 if ( strpos( _x( 'words', 'Word count type. Do not translate!', 'jetpack' ), 'characters' ) === 0 && preg_match( '/^utf\-?8$/i', get_option( 'blog_charset' ) ) ) {
77 $text = trim( preg_replace( "/[\n\r\t ]+/", ' ', $text ), ' ' );
78 preg_match_all( '/./u', $text, $words );
79 $words = array_slice( $words[0], 0, $excerpt_length + 1 );
80 $sep = '';
81 } else {
82 $words = preg_split( "/[\n\r\t ]+/", $text, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY );
83 $sep = ' ';
84 }
85
86 if ( count( $words ) > $excerpt_length ) {
87 array_pop( $words );
88 $text = implode( $sep, $words );
89 $text .= $excerpt_more;
90 } else {
91 $text = implode( $sep, $words );
92 }
93 } else {
94 $text = wp_kses_post( $post->post_excerpt );
95 }
96 return sprintf( '<p>%s</p>', $text );
97 }
98
99 }
100
101 if ( ! function_exists( 'jetpack_the_content_to_the_excerptt' ) ) {
102
103 /**
104 * Display Excerpt instead of Content.
105 *
106 * @deprecated 13.9 Moved to Classic Theme Helper package.
107 *
108 * @param string $content Post content.
109 */
110 function jetpack_the_content_to_the_excerpt( $content ) {
111 _deprecated_function( __FUNCTION__, 'jetpack-13.9' );
112 if ( ( is_home() || is_archive() ) && ! is_post_type_archive( array( 'jetpack-testimonial', 'jetpack-portfolio', 'product' ) ) ) {
113 if ( post_password_required() ) {
114 $excerpt = sprintf( '<p>%s</p>', esc_html__( 'There is no excerpt because this is a protected post.', 'jetpack' ) );
115 } else {
116 $excerpt = jetpack_blog_display_custom_excerpt();
117 }
118 }
119 if ( empty( $excerpt ) ) {
120 return $content;
121 } else {
122 return $excerpt;
123 }
124 }
125
126 }
127
128 if ( ! function_exists( 'jetpack_the_excerpt_to_the_content' ) ) {
129
130 /**
131 * Display Content instead of Excerpt.
132 *
133 * @deprecated 13.9 Moved to Classic Theme Helper package.
134 *
135 * @param string $content The post excerpt.
136 */
137 function jetpack_the_excerpt_to_the_content( $content ) {
138 _deprecated_function( __FUNCTION__, 'jetpack-13.9' );
139 if ( ( is_home() || is_archive() ) && ! is_post_type_archive( array( 'jetpack-testimonial', 'jetpack-portfolio', 'product' ) ) ) {
140 ob_start();
141 the_content(
142 sprintf(
143 wp_kses(
144 /* translators: %s: Name of current post. Only visible to screen readers */
145 __( 'Continue reading<span class="screen-reader-text"> "%s"</span>', 'jetpack' ),
146 array(
147 'span' => array(
148 'class' => array(),
149 ),
150 )
151 ),
152 get_the_title()
153 )
154 );
155 $content = ob_get_clean();
156 }
157 return $content;
158 }
159
160 }
161
162 if ( ! function_exists( 'jetpack_the_content_customizer' ) ) {
163
164 /**
165 * Display both Content and Excerpt instead of Content in the Customizer so live preview can switch between them.
166 *
167 * @deprecated 13.9 Moved to Classic Theme Helper package.
168 * @param string $content The post content.
169 */
170 function jetpack_the_content_customizer( $content ) {
171 _deprecated_function( __FUNCTION__, 'jetpack-13.9' );
172 $class = jetpack_the_content_customizer_class();
173 if ( ( is_home() || is_archive() ) && ! is_post_type_archive( array( 'jetpack-testimonial', 'jetpack-portfolio', 'product' ) ) ) {
174 if ( post_password_required() ) {
175 $excerpt = sprintf( '<p>%s</p>', esc_html__( 'There is no excerpt because this is a protected post.', 'jetpack' ) );
176 } else {
177 $excerpt = jetpack_blog_display_custom_excerpt();
178 }
179 }
180 if ( empty( $excerpt ) ) {
181 return $content;
182 } else {
183 return sprintf( '<div class="jetpack-blog-display %s jetpack-the-content">%s</div><div class="jetpack-blog-display %s jetpack-the-excerpt">%s</div>', $class, $content, $class, $excerpt );
184 }
185 }
186
187 }
188
189 if ( ! function_exists( 'jetpack_the_excerpt_customizer' ) ) {
190
191 /**
192 * Display both Content and Excerpt instead of Excerpt in the Customizer so live preview can switch between them.
193 *
194 * @deprecated 13.9 Moved to Classic Theme Helper package.
195 * @param string $excerpt The post excerpt.
196 */
197 function jetpack_the_excerpt_customizer( $excerpt ) {
198 _deprecated_function( __FUNCTION__, 'jetpack-13.9' );
199 if ( ( is_home() || is_archive() ) && ! is_post_type_archive( array( 'jetpack-testimonial', 'jetpack-portfolio', 'product' ) ) ) {
200 ob_start();
201 the_content(
202 sprintf(
203 wp_kses(
204 /* translators: %s: Name of current post. Only visible to screen readers */
205 __( 'Continue reading<span class="screen-reader-text"> "%s"</span>', 'jetpack' ),
206 array(
207 'span' => array(
208 'class' => array(),
209 ),
210 )
211 ),
212 get_the_title()
213 )
214 );
215 $content = ob_get_clean();
216 }
217 if ( empty( $content ) ) {
218 return $excerpt;
219 } else {
220 return sprintf( '<div class="jetpack-blog-display jetpack-the-content">%s</div><div class="jetpack-blog-display jetpack-the-excerpt">%s</div>', $content, $excerpt );
221 }
222 }
223
224 }
225
226 if ( ! function_exists( 'jetpack_the_excerpt_mixed_customizer' ) ) {
227
228 /**
229 * Display Content instead of Excerpt in the Customizer when theme uses a 'Mixed' display.
230 *
231 * @deprecated 13.9 Moved to Classic Theme Helper package.
232 * @param string $content The post excerpt.
233 */
234 function jetpack_the_excerpt_mixed_customizer( $content ) {
235 _deprecated_function( __FUNCTION__, 'jetpack-13.9' );
236 if ( ( is_home() || is_archive() ) && ! is_post_type_archive( array( 'jetpack-testimonial', 'jetpack-portfolio', 'product' ) ) ) {
237 jetpack_the_content_customizer_class( 'output-the-excerpt' );
238 ob_start();
239 the_content();
240 $content = ob_get_clean();
241 }
242 return $content;
243 }
244
245 }
246
247 if ( ! function_exists( 'jetpack_the_content_customizer_class' ) ) {
248
249 /**
250 * Returns a class value, `output-the-content` by default.
251 * Used for themes with a 'Mixed' Blog Display so we can tell which output is by default.
252 *
253 * @deprecated 13.9 Moved to Classic Theme Helper package.
254 * @param string|null $new_class CSS class added to content container.
255 */
256 function jetpack_the_content_customizer_class( $new_class = null ) {
257 _deprecated_function( __FUNCTION__, 'jetpack-13.9' );
258 static $class;
259 if ( isset( $new_class ) ) {
260 // Assign a new class and return.
261 $class = $new_class;
262 } elseif ( isset( $class ) ) {
263 // Reset the class after getting value.
264 $prev_class = $class;
265 $class = null;
266 return $prev_class;
267 } else {
268 // Return default class value.
269 return 'output-the-content';
270 }
271 }
272
273 }
274
275 if ( is_customize_preview() ) {
276 /*
277 * Display Content and Excerpt if the default Blog Display is 'Content'
278 * and we are in the Customizer.
279 */
280 if ( 'content' === $blog_display ) {
281 add_filter( 'the_content', 'jetpack_the_content_customizer' );
282 }
283
284 /*
285 * Display Content and Excerpt if the default Blog Display is 'Excerpt'
286 * and we are in the Customizer.
287 */
288 if ( 'excerpt' === $blog_display ) {
289 add_filter( 'the_excerpt', 'jetpack_the_excerpt_customizer' );
290 }
291
292 /*
293 * Display Content and Excerpt if the default Blog Display is 'Mixed'
294 * and we are in the Customizer.
295 */
296 if ( 'mixed' === $blog_display ) {
297 add_filter( 'the_content', 'jetpack_the_content_customizer' );
298 add_filter( 'the_excerpt', 'jetpack_the_excerpt_mixed_customizer' );
299 }
300 } else {
301 $display_option = get_option( 'jetpack_content_blog_display', $blog_display );
302
303 /*
304 * Display Excerpt if the default Blog Display is 'Content'
305 * or default Blog Display is 'Mixed'
306 * and the Option picked is 'Post Excerpt'
307 * and we aren't in the Customizer.
308 */
309 if ( ( 'content' === $blog_display || 'mixed' === $blog_display ) && 'excerpt' === $display_option ) {
310 add_filter( 'the_content', 'jetpack_the_content_to_the_excerpt' );
311 }
312
313 /*
314 * Display Content if the default Blog Display is 'Excerpt'
315 * or default Blog Display is 'Mixed'
316 * and the Option picked is 'Full Post'
317 * and we aren't in the Customizer.
318 */
319 if ( ( 'excerpt' === $blog_display || 'mixed' === $blog_display ) && 'content' === $display_option ) {
320 add_filter( 'the_excerpt', 'jetpack_the_excerpt_to_the_content' );
321 }
322 }
323