PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.2
Jetpack – WP Security, Backup, Speed, & Growth v16.2
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 14.1.1 14.2.2 All 502 releases
jetpack / modules / theme-tools / content-options / featured-images.php

featured-images.php in Jetpack – WP Security, Backup, Speed, & Growth 16.2, at modules/theme-tools/content-options/featured-images.php

142 lines 3.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Theme Tools: functions for Featured Images.
4 *
5 * @package automattic/jetpack
6 */
7
8 if ( ! defined( 'ABSPATH' ) ) {
9 exit( 0 );
10 }
11
12 if ( ! function_exists( 'jetpack_featured_images_remove_post_thumbnail' ) ) {
13
14 /**
15 * The function to prevent for Featured Images to be displayed in a theme.
16 *
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.
21 */
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();
25
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 }
93 }
94 add_filter( 'get_post_metadata', 'jetpack_featured_images_remove_post_thumbnail', true, 3 );
95
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;
108 }
109
110 }
111
112 if ( ! function_exists( 'jetpack_is_shop_page' ) ) {
113
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 }
125
126 global $wp_query;
127
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' );
131
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;
139 }
140
141 }
142