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