| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- <?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;
- }
|