PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3-a.1
Jetpack – WP Security, Backup, Speed, & Growth v16.3-a.1
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 13.9.2 14.0.1 All 504 releases
← All changes | modules/theme-tools/content-options/featured-images.php +117 -84 12.7.316.3-a.1 View file →
@@ -4,105 +4,138 @@
4 4 *
5 5 * @package automattic/jetpack
6 6 */
7 7
8 -/**
9 - * The function to prevent for Featured Images to be displayed in a theme.
10 - *
11 - * @param array $metadata Post metadata.
12 - * @param int $object_id Post ID.
13 - * @param string $meta_key Metadata key.
14 - */
15 -function jetpack_featured_images_remove_post_thumbnail( $metadata, $object_id, $meta_key ) {
16 - $opts = jetpack_featured_images_get_settings();
8 +if ( ! defined( 'ABSPATH' ) ) {
9 + exit( 0 );
10 +}
17 11
12 +if ( ! function_exists( 'jetpack_featured_images_remove_post_thumbnail' ) ) {
13 +
18 14 /**
19 - * Allow featured images to be displayed at all times for specific CPTs.
15 + * The function to prevent for Featured Images to be displayed in a theme.
20 16 *
21 - * @module theme-tools
22 - *
23 - * @since 9.1.0
24 - *
25 - * @param array $excluded_post_types Array of excluded post types.
17 + * @deprecated 13.9 Moved to Classic Theme Helper package.
18 + * @param array $metadata Post metadata.
19 + * @param int $object_id Post ID.
20 + * @param string $meta_key Metadata key.
26 21 */
27 - $excluded_post_types = apply_filters(
28 - 'jetpack_content_options_featured_image_exclude_cpt',
29 - array( 'jp_pay_product' )
30 - );
22 + function jetpack_featured_images_remove_post_thumbnail( $metadata, $object_id, $meta_key ) {
23 + _deprecated_function( __FUNCTION__, 'jetpack-13.9' );
24 + $opts = jetpack_featured_images_get_settings();
31 25
32 - // Automatically return metadata for specific post types, when we don't want to hide the Featured Image.
33 - if ( in_array( get_post_type( $object_id ), $excluded_post_types, true ) ) {
34 - return $metadata;
26 + /**
27 + * Allow featured images to be displayed at all times for specific CPTs.
28 + *
29 + * @module theme-tools
30 + *
31 + * @since 9.1.0
32 + *
33 + * @param array $excluded_post_types Array of excluded post types.
34 + */
35 + $excluded_post_types = apply_filters(
36 + 'jetpack_content_options_featured_image_exclude_cpt',
37 + array( 'jp_pay_product' )
38 + );
39 +
40 + // Automatically return metadata for specific post types, when we don't want to hide the Featured Image.
41 + if ( in_array( get_post_type( $object_id ), $excluded_post_types, true ) ) {
42 + return $metadata;
43 + }
44 +
45 + // Return false if the archive option or singular option is unticked.
46 + if (
47 + ( true === $opts['archive']
48 + && ( is_home() || is_archive() || is_search() )
49 + && ! jetpack_is_shop_page()
50 + && ! $opts['archive-option']
51 + && ( isset( $meta_key )
52 + && '_thumbnail_id' === $meta_key )
53 + && in_the_loop()
54 + )
55 + || ( true === $opts['post']
56 + && is_single()
57 + && ! jetpack_is_product()
58 + && ! $opts['post-option']
59 + && ( isset( $meta_key )
60 + && '_thumbnail_id' === $meta_key )
61 + && in_the_loop()
62 + )
63 + || ( true === $opts['page']
64 + && is_singular()
65 + && is_page()
66 + && ! $opts['page-option']
67 + && ( isset( $meta_key )
68 + && '_thumbnail_id' === $meta_key )
69 + && in_the_loop()
70 + )
71 + || ( true === $opts['portfolio']
72 + && post_type_exists( 'jetpack-portfolio' )
73 + && is_singular( 'jetpack-portfolio' )
74 + && ! $opts['portfolio-option']
75 + && ( isset( $meta_key )
76 + && '_thumbnail_id' === $meta_key )
77 + && in_the_loop()
78 + )
79 + ) {
80 +
81 + // Do not override thumbnail settings within blocks (eg. Latest Posts block).
82 + $trace = debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_debug_backtrace
83 + foreach ( $trace as $frame ) {
84 + if ( ! empty( $frame['class'] ) && class_exists( $frame['class'], false ) && is_a( $frame['class'], WP_Block::class, true ) ) {
85 + return $metadata;
86 + }
87 + }
88 +
89 + return false;
90 + } else {
91 + return $metadata;
92 + }
35 93 }
94 + add_filter( 'get_post_metadata', 'jetpack_featured_images_remove_post_thumbnail', true, 3 );
36 95
37 - // Return false if the archive option or singular option is unticked.
38 - if (
39 - ( true === $opts['archive']
40 - && ( is_home() || is_archive() || is_search() )
41 - && ! jetpack_is_shop_page()
42 - && ! $opts['archive-option']
43 - && ( isset( $meta_key )
44 - && '_thumbnail_id' === $meta_key )
45 - && in_the_loop()
46 - )
47 - || ( true === $opts['post']
48 - && is_single()
49 - && ! jetpack_is_product()
50 - && ! $opts['post-option']
51 - && ( isset( $meta_key )
52 - && '_thumbnail_id' === $meta_key )
53 - && in_the_loop()
54 - )
55 - || ( true === $opts['page']
56 - && is_singular()
57 - && is_page()
58 - && ! $opts['page-option']
59 - && ( isset( $meta_key )
60 - && '_thumbnail_id' === $meta_key )
61 - && in_the_loop()
62 - )
63 - || ( true === $opts['portfolio']
64 - && post_type_exists( 'jetpack-portfolio' )
65 - && is_singular( 'jetpack-portfolio' )
66 - && ! $opts['portfolio-option']
67 - && ( isset( $meta_key )
68 - && '_thumbnail_id' === $meta_key )
69 - && in_the_loop()
70 - )
71 - ) {
72 - return false;
73 - } else {
74 - return $metadata;
96 +}
97 +
98 +if ( ! function_exists( 'jetpack_is_product' ) ) {
99 +
100 + /**
101 + * Check if we are in a WooCommerce Product in order to exclude it from the is_single check.
102 + *
103 + * @deprecated 13.9 Moved to Classic Theme Helper package.
104 + */
105 + function jetpack_is_product() {
106 + _deprecated_function( __FUNCTION__, 'jetpack-13.9' );
107 + return ( function_exists( 'is_product' ) ) ? is_product() : false;
75 108 }
109 +
76 110 }
77 -add_filter( 'get_post_metadata', 'jetpack_featured_images_remove_post_thumbnail', true, 3 );
78 111
79 -/**
80 - * Check if we are in a WooCommerce Product in order to exclude it from the is_single check.
81 - */
82 -function jetpack_is_product() {
83 - return ( function_exists( 'is_product' ) ) ? is_product() : false;
84 -}
112 +if ( ! function_exists( 'jetpack_is_shop_page' ) ) {
85 113
86 -/**
87 - * Check if we are in a WooCommerce Shop in order to exclude it from the is_archive check.
88 - */
89 -function jetpack_is_shop_page() {
90 - // Check if WooCommerce is active first.
91 - if ( ! class_exists( 'WooCommerce' ) ) {
92 - return false;
93 - }
114 + /**
115 + * Check if we are in a WooCommerce Shop in order to exclude it from the is_archive check.
116 + *
117 + * @deprecated 13.9 Moved to Classic Theme Helper package.
118 + */
119 + function jetpack_is_shop_page() {
120 + _deprecated_function( __FUNCTION__, 'jetpack-13.9' );
121 + // Check if WooCommerce is active first.
122 + if ( ! class_exists( 'WooCommerce' ) ) {
123 + return false;
124 + }
94 125
95 - global $wp_query;
126 + global $wp_query;
96 127
97 - $front_page_id = get_option( 'page_on_front' );
98 - $current_page_id = $wp_query->get( 'page_id' );
99 - $is_static_front_page = 'page' === get_option( 'show_on_front' );
128 + $front_page_id = get_option( 'page_on_front' );
129 + $current_page_id = $wp_query->get( 'page_id' );
130 + $is_static_front_page = 'page' === get_option( 'show_on_front' );
100 131
101 - if ( $is_static_front_page && $front_page_id === $current_page_id ) {
102 - $is_shop_page = ( wc_get_page_id( 'shop' ) === $current_page_id ) ? true : false;
103 - } else {
104 - $is_shop_page = is_shop();
132 + if ( $is_static_front_page && $front_page_id === $current_page_id ) {
133 + $is_shop_page = wc_get_page_id( 'shop' ) === $current_page_id;
134 + } else {
135 + $is_shop_page = is_shop();
136 + }
137 +
138 + return $is_shop_page;
105 139 }
106 140
107 - return $is_shop_page;
108 141 }