1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
<?php
if ( ! class_exists( 'Jetpack_Media_Summary' ) ) {
if ( defined('IS_WPCOM') && IS_WPCOM ) {
include WP_CONTENT_DIR . '/lib/class.wpcom-media-summary.php';
} else {
jetpack_require_lib( 'class.media-summary' );
}
}
/**
* Better OG Image Tags for Image Post Formats
*/
function enhanced_og_image( $tags ) {
if ( !is_singular() || post_password_required() )
return $tags;
global $post;
// Always favor featured images.
if ( enhanced_og_has_featured_image( $post->ID ) )
return $tags;
$summary = Jetpack_Media_Summary::get( $post->ID );
if ( 'image' != $summary['type'] )
return $tags;
$tags['og:image'] = $summary['image'];
$tags['og:image:secure_url'] = $summary['secure']['image'];
return $tags;
}
add_filter( 'jetpack_open_graph_tags', 'enhanced_og_image' );
/**
* Better OG Image Tags for Gallery Post Formats
*/
function enhanced_og_gallery( $tags ) {
if ( !is_singular() || post_password_required() )
return $tags;
global $post;
// Always favor featured images.
if ( enhanced_og_has_featured_image( $post->ID ) )
return $tags;
$summary = Jetpack_Media_Summary::get( $post->ID );
if ( 'gallery' != $summary['type'] )
return $tags;
if( !isset( $summary['images'] ) || !is_array( $summary['images'] ) || empty( $summary['images'] ) )
return $tags;
$images = $secures = array();
foreach ( $summary['images'] as $i => $image ) {
$images[] = $image['url'];
$secures[] = $summary['secure']['images'][$i]['url'];
}
$tags['og:image'] = $images;
$tags['og:image:secure_url'] = $secures;
return $tags;
}
add_filter( 'jetpack_open_graph_tags', 'enhanced_og_gallery' );
/**
* Allows VideoPress, YouTube, and Vimeo videos to play inline on Facebook
*/
function enhanced_og_video( $tags ) {
if ( !is_singular() || post_password_required() )
return $tags;
global $post;
// Always favor featured images.
if ( enhanced_og_has_featured_image( $post->ID ) )
return $tags;
$summary = Jetpack_Media_Summary::get( $post->ID );
if ( 'video' != $summary['type'] ) {
if ( $summary['count']['video'] > 0 && $summary['count']['image'] < 1 ) {
$tags['og:image'] = $summary['image'];
$tags['og:image:secure_url'] = $summary['secure']['image'];
}
return $tags;
}
$tags['og:image'] = $summary['image'];
$tags['og:image:secure_url'] = $summary['secure']['image'];
// This should be html by default for youtube/vimeo, since we're linking to HTML pages.
$tags['og:video:type'] = isset( $summary['video_type'] ) ? $summary['video_type'] : 'text/html';
$video_url = $summary['video'];
$secure_video_url = $summary['secure']['video'];
if ( preg_match( '/((youtube|vimeo)\.com|youtu.be)/', $video_url ) ) {
if ( strstr( $video_url, 'youtube' ) ) {
$id = jetpack_get_youtube_id( $video_url );
$video_url = 'http://www.youtube.com/embed/' . $id;
$secure_video_url = 'https://www.youtube.com/embed/' . $id;
} else if ( strstr( $video_url, 'vimeo' ) ) {
preg_match( '|vimeo\.com/(\d+)/?$|i', $video_url, $match );
$id = (int) $match[1];
$video_url = 'http://vimeo.com/moogaloop.swf?clip_id=' . $id;
$secure_video_url = 'https://vimeo.com/moogaloop.swf?clip_id=' . $id;
}
}
$tags['og:video'] = $video_url;
$tags['og:video:secure_url'] = $secure_video_url;
if ( empty( $post->post_title ) )
$tags['og:title'] = sprintf( __( 'Video on %s', 'jetpack' ), get_option( 'blogname' ) );
return $tags;
}
add_filter( 'jetpack_open_graph_tags', 'enhanced_og_video' );
function enhanced_og_has_featured_image( $post_id ) {
$featured = Jetpack_PostImages::from_thumbnail( $post_id, 200, 200 );
if ( !empty( $featured ) && count( $featured ) > 0 )
return true;
return false;
}
|