18b733951cf9be122dbe9641e3196727c7edd103
[WebKit-https.git] / Websites / webkit.org / wp-content / plugins / social-meta.php
1 <?php
2 /*
3 Plugin Name: Social Meta
4 Description: Adds schema.org, Twitter Card, Open Graph meta for posts and pages
5 Version:     1.0
6 Author:      Jonathan Davis
7 Author URI:  http://webkit.org
8 */
9
10 add_action('wp_head', function() { ?>
11     <?php $image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post_id), 'large' )[0]; ?>
12     
13     <!-- Schema.org markup -->
14     <meta itemprop="name" content="<?php the_title(); ?>">
15     <meta itemprop="description" content="<?php the_excerpt(); ?>">
16     <?php if ( $image_url ): ?>
17     <meta itemprop="image" content="<?php echo $image_url; ?>">
18     <?php endif; ?>
19
20     <!-- Twitter Card data -->
21     <meta name="twitter:card" content="summary_large_image">
22     <meta name="twitter:site" content="@webkit">
23     <meta name="twitter:title" content="<?php the_title(); ?>">
24     <meta name="twitter:description" content="<?php the_excerpt(); ?>">
25     <?php if ( '' !== ( $twitter_handle = get_the_author_meta('twitter') ) ): ?>
26     <meta name="twitter:creator" content="@<?php echo esc_html($twitter_handle); ?>">
27     <?php endif; ?>
28     <?php if ( $image_url ): // Twitter summary card with large image must be at least 280x150px ?>
29     <meta name="twitter:image:src" content="<?php echo $image_url; ?>">
30     <?php endif; ?>
31     
32     <!-- Open Graph data -->
33     <meta property="og:title" content="<?php the_title(); ?>" />
34     <meta property="og:type" content="article" />
35     <meta property="og:url" content="<?php the_permalink(); ?>" />
36     <?php if ( $image_url ): ?>
37     <meta itemprop="og:image" content="<?php echo $image_url; ?>">
38     <?php endif; ?>
39     <meta property="og:description" content="<?php the_excerpt(); ?>" />
40     <meta property="og:site_name" content="<?php bloginfo('title'); ?>" />
41     <meta property="article:published_time" content="<?php the_time('c'); ?>" />
42     <meta property="article:modified_time" content="<?php the_modified_date('c'); ?>" />
43     <?php     
44         $categories = wp_get_object_terms( get_the_ID(), 'category', array( 'fields' => 'names' ) );
45         $tags = wp_get_object_terms( get_the_ID(), 'post_tag', array( 'fields' => 'names' ) );
46         
47         if ( ! empty($categories) ): 
48             $section = array_shift($categories);      // The first category is used as the section
49             $tags = array_merge($categories, $tags);  // The rest are prepended to the tag list
50     ?>
51     <meta property="article:section" content="<?php echo esc_attr($section); ?>" />
52     <?php
53         endif;
54
55         if ( ! empty($tags) ): foreach( $tags as $tag ):
56     ?>
57     <meta property="article:tag" content="<?php echo esc_attr($tag); ?>" />
58     <?php
59         endforeach; endif;
60     ?>
61     
62 <?php
63 });