PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 15.1.2
Jetpack – WP Security, Backup, Speed, & Growth v15.1.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 / enhanced-open-graph.php
jetpack Last commit date
3rd-party 11 months ago _inc 1 day ago css 1 year ago extensions 10 months ago images 1 year ago jetpack_vendor 1 day ago json-endpoints 10 months ago modules 10 months ago sal 10 months ago src 1 year ago vendor 10 months ago views 11 months ago CHANGELOG.md 10 months ago LICENSE.txt 5 years ago SECURITY.md 2 years ago class-jetpack-connection-status.php 2 years ago class-jetpack-gallery-settings.php 1 year ago class-jetpack-newsletter-dashboard-widget.php 1 year ago class-jetpack-pre-connection-jitms.php 2 years ago class-jetpack-stats-dashboard-widget.php 1 year ago class-jetpack-xmlrpc-methods.php 1 year ago class.frame-nonce-preview.php 1 year ago class.jetpack-admin.php 11 months ago class.jetpack-autoupdate.php 1 year ago class.jetpack-cli.php 11 months ago class.jetpack-client-server.php 2 years ago class.jetpack-gutenberg.php 11 months ago class.jetpack-heartbeat.php 2 years ago class.jetpack-modules-list-table.php 1 year ago class.jetpack-network-sites-list-table.php 1 year ago class.jetpack-network.php 1 year ago class.jetpack-plan.php 3 years ago class.jetpack-post-images.php 1 year ago class.jetpack-twitter-cards.php 1 year ago class.jetpack-user-agent.php 2 years ago class.jetpack.php 11 months ago class.json-api-endpoints.php 11 months ago class.json-api.php 11 months ago class.photon.php 3 years ago composer.json 10 months ago enhanced-open-graph.php 1 year ago functions.compat.php 1 year ago functions.cookies.php 2 years ago functions.global.php 1 year ago functions.is-mobile.php 2 years ago functions.opengraph.php 1 year ago functions.photon.php 2 years ago jetpack.php 1 day ago json-api-config.php 3 years ago json-endpoints.php 2 years ago load-jetpack.php 1 year ago locales.php 1 year ago readme.txt 1 day ago unauth-file-upload.php 1 year ago uninstall.php 1 year ago wpml-config.xml 4 years ago
enhanced-open-graph.php
175 lines
1 <?php
2 /**
3 * Enhanced Open Graph for Jetpack.
4 *
5 * @package automattic/jetpack
6 */
7
8 if ( ! defined( 'ABSPATH' ) ) {
9 exit( 0 );
10 }
11
12 if ( ! class_exists( 'Jetpack_Media_Summary' ) ) {
13 require_once JETPACK__PLUGIN_DIR . '_inc/lib/class.media-summary.php';
14 }
15
16 /**
17 * Better OG Image Tags for Image Post Formats
18 *
19 * @param array $tags Array of Open Graph tags.
20 */
21 function enhanced_og_image( $tags ) {
22 if ( ! is_singular() || post_password_required() ) {
23 return $tags;
24 }
25
26 global $post;
27
28 // Bail if we do not have info about the post.
29 if ( ! $post instanceof WP_Post ) {
30 return $tags;
31 }
32
33 // Always favor featured images.
34 if ( enhanced_og_has_featured_image( $post->ID ) ) {
35 return $tags;
36 }
37
38 $summary = Jetpack_Media_Summary::get( $post->ID );
39
40 if ( 'image' !== $summary['type'] ) {
41 return $tags;
42 }
43
44 $tags['og:image'] = $summary['image'];
45 $tags['og:image:secure_url'] = $summary['secure']['image'];
46
47 return $tags;
48 }
49 add_filter( 'jetpack_open_graph_tags', 'enhanced_og_image' );
50
51 /**
52 * Better OG Image Tags for Gallery Post Formats
53 *
54 * @param array $tags Array of Open Graph tags.
55 */
56 function enhanced_og_gallery( $tags ) {
57 if ( ! is_singular() || post_password_required() ) {
58 return $tags;
59 }
60
61 global $post;
62
63 // Bail if we do not have info about the post.
64 if ( ! $post instanceof WP_Post ) {
65 return $tags;
66 }
67
68 // Always favor featured images.
69 if ( enhanced_og_has_featured_image( $post->ID ) ) {
70 return $tags;
71 }
72
73 $summary = Jetpack_Media_Summary::get( $post->ID );
74
75 if ( 'gallery' !== $summary['type'] ) {
76 return $tags;
77 }
78
79 if ( ! isset( $summary['images'] ) || ! is_array( $summary['images'] ) || empty( $summary['images'] ) ) {
80 return $tags;
81 }
82
83 $images = array();
84 $secures = array();
85
86 foreach ( $summary['images'] as $i => $image ) {
87 $images[] = $image['url'];
88 $secures[] = $summary['secure']['images'][ $i ]['url'];
89 }
90
91 $tags['og:image'] = $images;
92 $tags['og:image:secure_url'] = $secures;
93
94 return $tags;
95 }
96 add_filter( 'jetpack_open_graph_tags', 'enhanced_og_gallery' );
97
98 /**
99 * Allows VideoPress, YouTube, and Vimeo videos to play inline on Facebook
100 *
101 * @param array $tags Array of Open Graph tags.
102 */
103 function enhanced_og_video( $tags ) {
104 if ( ! is_singular() || post_password_required() ) {
105 return $tags;
106 }
107
108 global $post;
109
110 // Bail if we do not have info about the post.
111 if ( ! $post instanceof WP_Post ) {
112 return $tags;
113 }
114
115 // Always favor featured images.
116 if ( enhanced_og_has_featured_image( $post->ID ) ) {
117 return $tags;
118 }
119
120 $summary = Jetpack_Media_Summary::get( $post->ID );
121
122 if ( 'video' !== $summary['type'] ) {
123 if ( $summary['count']['video'] > 0 && $summary['count']['image'] < 1 ) {
124 $tags['og:image'] = $summary['image'];
125 $tags['og:image:secure_url'] = $summary['secure']['image'];
126 }
127 return $tags;
128 }
129
130 $tags['og:image'] = $summary['image'];
131 $tags['og:image:secure_url'] = $summary['secure']['image'];
132
133 // This should be html by default for youtube/vimeo, since we're linking to HTML pages.
134 $tags['og:video:type'] = isset( $summary['video_type'] ) ? $summary['video_type'] : 'text/html';
135
136 $video_url = $summary['video'];
137 $secure_video_url = $summary['secure']['video'];
138
139 if ( preg_match( '/((youtube|vimeo)\.com|youtu.be)/', $video_url ) ) {
140 if ( strstr( $video_url, 'youtube' ) ) {
141 $id = jetpack_get_youtube_id( $video_url );
142 $video_url = 'http://www.youtube.com/embed/' . $id;
143 $secure_video_url = 'https://www.youtube.com/embed/' . $id;
144 } elseif ( strstr( $video_url, 'vimeo' ) ) {
145 preg_match( '|vimeo\.com/(\d+)/?$|i', $video_url, $match );
146 if ( isset( $match[1] ) ) {
147 $id = (int) $match[1];
148 $video_url = 'http://vimeo.com/moogaloop.swf?clip_id=' . $id;
149 $secure_video_url = 'https://vimeo.com/moogaloop.swf?clip_id=' . $id;
150 }
151 }
152 }
153
154 $tags['og:video'] = $video_url;
155 $tags['og:video:secure_url'] = $secure_video_url;
156
157 if ( empty( $post->post_title ) ) {
158 /* translators: %s is the name of the site */
159 $tags['og:title'] = sprintf( __( 'Video on %s', 'jetpack' ), get_option( 'blogname' ) );
160 }
161
162 return $tags;
163 }
164 add_filter( 'jetpack_open_graph_tags', 'enhanced_og_video' );
165
166 /**
167 * Check if a post has a suitable featured image.
168 *
169 * @param int $post_id The post ID to check.
170 * @return bool True if the post has a suitable featured image, false otherwise.
171 */
172 function enhanced_og_has_featured_image( $post_id ) {
173 return ! empty( Jetpack_PostImages::from_thumbnail( $post_id ) );
174 }
175