'http://schema.org', '@type' => is_page() ? 'WebPage' : 'Article', 'mainEntityOfPage' => get_permalink( $post->ID ), 'publisher' => array( '@type' => 'Organization', 'name' => get_bloginfo( 'blog_name' ), ), 'headline' => get_the_title( $post->ID ), 'datePublished' => date( 'c', get_the_time( 'U', $post->ID ) ), 'dateModified' => date( 'c', get_post_modified_time( 'U', false, $post ) ), ); $excerpt = apply_filters( 'the_excerpt', $post->post_excerpt ); if ( ! $excerpt ) { $excerpt = preg_replace("~(?:\[/?)[^/\]]+/?\]~s", '', $post->post_content); $excerpt = wp_trim_words( strip_shortcodes( $excerpt ), 55, ' ...' ); } $metadata['description'] = $excerpt; $post_author = get_userdata( $post->post_author ); if ( $post_author ) { $metadata['author'] = array( '@type' => 'Person', 'name' => html_entity_decode( $post_author->display_name, ENT_QUOTES, get_bloginfo( 'charset' ) ), ); } if ( has_site_icon() ) { $site_icon_url = get_site_icon_url( 32 ); $metadata['publisher']['logo'] = array( '@type' => 'ImageObject', 'url' => $site_icon_url, 'height' => 32, 'width' => 32, ); } $post_images = array( '1x1' => graphene_get_best_post_image( $post->ID, array( 696, 696 ) ), '4x3' => graphene_get_best_post_image( $post->ID, array( 696, 522 ) ), '16x9' => graphene_get_best_post_image( $post->ID, array( 696, 392 ) ) ); $images = array(); foreach ( $post_images as $aspect_ratio => $image ) if ( $image ) $images[] = $image['url']; $images = array_values( array_unique( $images ) ); if ( $images ) $metadata['image'] = $images; $metadata = apply_filters( 'graphene_rich_snippet', $metadata ); $graphene_in_rich_snippet = false; if ( ! $metadata ) return; ?> element */ function graphene_print_open_graph(){ if ( ! is_singular() ) return; global $post; $open_graph = array( 'og:type' => 'article', 'og:title' => get_the_title( $post->ID ), 'og:url' => get_permalink( $post->ID ), 'og:site_name' => get_bloginfo( 'blog_name' ), ); remove_action( 'the_excerpt', 'graphene_manual_excerpt_more' ); $excerpt = strip_tags( apply_filters( 'the_excerpt', $post->post_excerpt ) ); add_action( 'the_excerpt', 'graphene_manual_excerpt_more' ); if ( ! $excerpt ) { $excerpt = preg_replace("~(?:\[/?)[^/\]]+/?\]~s", '', $post->post_content); $excerpt = wp_trim_words( strip_tags( strip_shortcodes( $excerpt ) ), 55, ' ...' ); } $open_graph['og:description'] = $excerpt; $published_time = date( 'c', get_the_time( 'U', $post->ID ) ); $updated_time = date( 'c', get_post_modified_time( 'U', false, $post ) ); $open_graph['og:updated_time'] = $updated_time; $open_graph['article:modified_time'] = $updated_time; $open_graph['article:published_time'] = $published_time; $image = graphene_get_best_post_image( $post->ID, array( 1200, 630 ) ); if ( $image ) { $open_graph['og:image'] = $image['url']; $open_graph['og:image:width'] = $image['width']; $open_graph['og:image:height'] = $image['height']; } $open_graph = apply_filters( 'graphene_open_graph', $open_graph, $post ); foreach ( $open_graph as $property => $content ) { echo '' . "\n"; } } /** * Check if there are other plugins generating Open Graph metadata */ function graphene_is_og_plugins_available(){ $plugins = array( '2-click-socialmedia-buttons/2-click-socialmedia-buttons.php', // 2 Click Social Media Buttons. 'add-link-to-facebook/add-link-to-facebook.php', // Add Link to Facebook. 'add-meta-tags/add-meta-tags.php', // Add Meta Tags. 'easy-facebook-share-thumbnails/esft.php', // Easy Facebook Share Thumbnail. 'facebook/facebook.php', // Facebook (official plugin). 'facebook-awd/AWD_facebook.php', // Facebook AWD All in one. 'facebook-featured-image-and-open-graph-meta-tags/fb-featured-image.php', // Facebook Featured Image & OG Meta Tags. 'facebook-meta-tags/facebook-metatags.php', // Facebook Meta Tags. 'wonderm00ns-simple-facebook-open-graph-tags/wonderm00n-open-graph.php', // Facebook Open Graph Meta Tags for WordPress. 'facebook-revised-open-graph-meta-tag/index.php', // Facebook Revised Open Graph Meta Tag. 'facebook-thumb-fixer/_facebook-thumb-fixer.php', // Facebook Thumb Fixer. 'facebook-and-digg-thumbnail-generator/facebook-and-digg-thumbnail-generator.php', // Fedmich's Facebook Open Graph Meta. 'network-publisher/networkpub.php', // Network Publisher. 'nextgen-facebook/nextgen-facebook.php', // NextGEN Facebook OG. 'opengraph/opengraph.php', // Open Graph. 'open-graph-protocol-framework/open-graph-protocol-framework.php', // Open Graph Protocol Framework. 'seo-facebook-comments/seofacebook.php', // SEO Facebook Comments. 'seo-ultimate/seo-ultimate.php', // SEO Ultimate. 'sexybookmarks/sexy-bookmarks.php', // Shareaholic. 'shareaholic/sexy-bookmarks.php', // Shareaholic. 'sharepress/sharepress.php', // SharePress. 'simple-facebook-connect/sfc.php', // Simple Facebook Connect. 'social-discussions/social-discussions.php', // Social Discussions. 'social-sharing-toolkit/social_sharing_toolkit.php', // Social Sharing Toolkit. 'socialize/socialize.php', // Socialize. 'only-tweet-like-share-and-google-1/tweet-like-plusone.php', // Tweet, Like, Google +1 and Share. 'wordbooker/wordbooker.php', // Wordbooker. 'wpsso/wpsso.php', // WordPress Social Sharing Optimization. 'wp-caregiver/wp-caregiver.php', // WP Caregiver. 'wp-facebook-like-send-open-graph-meta/wp-facebook-like-send-open-graph-meta.php', // WP Facebook Like Send & Open Graph Meta. 'wp-facebook-open-graph-protocol/wp-facebook-ogp.php', // WP Facebook Open Graph protocol. 'wp-ogp/wp-ogp.php', // WP-OGP. 'zoltonorg-social-plugin/zosp.php', // Zolton.org Social Plugin. 'jetpack/jetpack.php', // Jetpack 'wordpress-seo/wp-seo.php', // WordPress SEO 'webtexttool/webtexttool.php', // Web Text Tool ); $active_plugins = get_option( 'active_plugins' ); foreach ( $plugins as $plugin ) { if ( in_array( $plugin, $active_plugins ) ) return true; } return false; } /** * Add Open Graph namespace */ function graphene_add_og_namespace( $input ) { $namespace = 'og: http://ogp.me/ns#'; if ( strpos( $input, ' prefix=' ) !== false ) { $regex = '`prefix=([\'"])(.+?)\1`'; $replace = 'prefix="$2 ' . $namespace . '"'; $input = preg_replace( $regex, $replace, $input ); } else { $input .= ' prefix="' . $namespace . '"'; } return $input; }