function jetpack_og_get_image($width = 200, $height = 200, $max_images = 4)
{
    // Facebook requires thumbnails to be a minimum of 200x200
    $image = '';
    if (is_singular() && !is_home()) {
        global $post;
        $image = '';
        // Grab obvious image if $post is an attachment page for an image
        if (is_attachment($post->ID) && 'image' == substr($post->post_mime_type, 0, 5)) {
            $image = wp_get_attachment_url($post->ID);
        }
        // Attempt to find something good for this post using our generalized PostImages code
        if (!$image && class_exists('Jetpack_PostImages')) {
            $post_images = Jetpack_PostImages::get_images($post->ID, array('width' => $width, 'height' => $height));
            if ($post_images && !is_wp_error($post_images)) {
                $image = array();
                foreach ((array) $post_images as $post_image) {
                    $image['src'] = $post_image['src'];
                    if (isset($post_image['src_width'], $post_image['src_height'])) {
                        $image['width'] = $post_image['src_width'];
                        $image['height'] = $post_image['src_height'];
                    }
                }
            }
        }
    } else {
        if (is_author()) {
            $author = get_queried_object();
            if (function_exists('get_avatar_url')) {
                // Prefer the core function get_avatar_url() if available, WP 4.2+
                $image['src'] = get_avatar_url($author->user_email, array('size' => $width));
            } else {
                $has_filter = has_filter('pre_option_show_avatars', '__return_true');
                if (!$has_filter) {
                    add_filter('pre_option_show_avatars', '__return_true');
                }
                $avatar = get_avatar($author->user_email, $width);
                if (!$has_filter) {
                    remove_filter('pre_option_show_avatars', '__return_true');
                }
                if (!empty($avatar) && !is_wp_error($avatar)) {
                    if (preg_match('/src=["\']([^"\']+)["\']/', $avatar, $matches)) {
                    }
                    $image['src'] = wp_specialchars_decode($matches[1], ENT_QUOTES);
                }
            }
        }
    }
    if (empty($image)) {
        $image = array();
    } else {
        if (!is_array($image)) {
            $image = array('src' => $image);
        }
    }
    // First fall back, blavatar
    if (empty($image) && function_exists('blavatar_domain')) {
        $blavatar_domain = blavatar_domain(site_url());
        if (blavatar_exists($blavatar_domain)) {
            $image['src'] = blavatar_url($blavatar_domain, 'img', $width, false, true);
            $image['width'] = $width;
            $image['height'] = $height;
        }
    }
    // Second fall back, Site Logo
    if (empty($image) && (function_exists('jetpack_has_site_logo') && jetpack_has_site_logo())) {
        $image['src'] = jetpack_get_site_logo('url');
        $image_dimensions = jetpack_get_site_logo_dimensions();
        if (!empty($image_dimensions)) {
            $image['width'] = $image_dimensions['width'];
            $image['height'] = $image_dimensions['height'];
        }
    }
    // Third fall back, Site Icon
    if (empty($image) && (function_exists('jetpack_has_site_icon') && jetpack_has_site_icon())) {
        $image['src'] = jetpack_site_icon_url(null, '512');
        $image['width'] = '512';
        $image['height'] = '512';
    }
    // Fourth fall back, Core Site Icon. Added in WP 4.3.
    if (empty($image) && (function_exists('has_site_icon') && has_site_icon())) {
        $image['src'] = get_site_icon_url(null, '512');
    }
    // Finally fall back, blank image
    if (empty($image)) {
        /**
         * Filter the default Open Graph Image tag, used when no Image can be found in a post.
         *
         * @since 3.0.0
         *
         * @param string $str Default Image URL.
         */
        $image['src'] = apply_filters('jetpack_open_graph_image_default', 'https://s0.wp.com/i/blank.jpg');
    }
    return $image;
}
 static function twitter_cards_define_type_based_on_image_count($og_tags, $extract)
 {
     $card_type = 'summary';
     $img_count = $extract['count']['image'];
     if (empty($img_count)) {
         // No images, use Blavatar as a thumbnail for the summary type.
         if (function_exists('blavatar_domain')) {
             $blavatar_domain = blavatar_domain(site_url());
             if (blavatar_exists($blavatar_domain)) {
                 $og_tags['twitter:image'] = blavatar_url($blavatar_domain, 'img', 240);
             }
         }
         // Second fall back, Site Logo
         if (empty($og_tags['twitter:image']) && (function_exists('jetpack_has_site_logo') && jetpack_has_site_logo())) {
             $og_tags['twitter:image'] = jetpack_get_site_logo('url');
         }
         // Third fall back, Site Icon
         if (empty($og_tags['twitter:image']) && (function_exists('jetpack_has_site_icon') && jetpack_has_site_icon())) {
             $og_tags['twitter:image'] = jetpack_site_icon_url(null, '240');
         }
         // Not falling back on Gravatar, because there's no way to know if we end up with an auto-generated one.
     } elseif (1 == $img_count && ('image' == $extract['type'] || 'gallery' == $extract['type'])) {
         // 1 image = photo
         // Test for $extract['type'] to limit to image and gallery, so we don't send a potential fallback image like a Gravatar as a photo post.
         $card_type = 'photo';
         $og_tags['twitter:image'] = add_query_arg('w', 1400, empty($extract['images']) ? $extract['image'] : $extract['images'][0]['url']);
     } elseif ($img_count <= 3) {
         // 2-3 images = summary with small thumbnail
         $og_tags['twitter:image'] = add_query_arg('w', 240, empty($extract['images']) ? $extract['image'] : $extract['images'][0]['url']);
     } elseif ($img_count >= 4) {
         // >= 4 images = gallery
         $card_type = 'gallery';
         $og_tags = self::twitter_cards_gallery($extract, $og_tags);
     }
     return array($og_tags, $card_type);
 }
Пример #3
0
    /**
     * Select a file admin view
     */
    public static function select_page()
    {
        // Display the site_icon form to upload the image
        ?>
		<form action="<?php 
        echo esc_url(admin_url('options-general.php?page=jetpack-site_icon-upload'));
        ?>
" method="post" enctype="multipart/form-data">

			<h2 class="site-icon-title">
			<?php 
        if (jetpack_has_site_icon()) {
            esc_html_e('Update Site Icon', 'jetpack');
        } else {
            esc_html_e('Add Site Icon', 'jetpack');
        }
        ?>
 <span class="small"><?php 
        esc_html_e('select a file', 'jetpack');
        ?>
</span></h2>
			<p><?php 
        esc_html_e('Upload a image that you want to use as your site icon. You will be asked to crop it in the next step.', 'jetpack');
        ?>
</p>


			<p><input name="site-iconfile" id="site-iconfile" type="file" /></p>
			<p><?php 
        esc_html_e('The image needs to be at least', 'jetpack');
        ?>
 <strong><?php 
        echo self::$min_size;
        ?>
px</strong> <?php 
        esc_html_e('in both width and height.', 'jetpack');
        ?>
</p>
			<p class="submit site-icon-submit-form">
				<input name="submit" value="<?php 
        esc_attr_e('Upload Image', 'jetpack');
        ?>
" type="submit" class="button button-primary button-large" /><?php 
        printf(__(' or <a href="%s">Cancel</a> and go back to the settings.', 'jetpack'), esc_url(admin_url('options-general.php')));
        ?>
				<input name="step" value="2" type="hidden" />

				<?php 
        wp_nonce_field('update-site_icon-2', '_nonce');
        ?>
			</p>
		</form>
		<?php 
    }
 /**
  * @param    int $post_id The post ID to check
  * @param    int $size
  * @return Array containing details of the image, or empty array if none.
  */
 static function from_blavatar($post_id, $size = 96)
 {
     $permalink = get_permalink($post_id);
     if (function_exists('blavatar_domain') && function_exists('blavatar_exists') && function_exists('blavatar_url')) {
         $domain = blavatar_domain($permalink);
         if (!blavatar_exists($domain)) {
             return array();
         }
         $url = blavatar_url($domain, 'img', $size);
     } elseif (function_exists('jetpack_has_site_icon') && jetpack_has_site_icon()) {
         $url = jetpack_site_icon_url(null, $size, $default = false);
     } else {
         return array();
     }
     return array(array('type' => 'image', 'from' => 'blavatar', 'src' => $url, 'src_width' => $size, 'src_height' => $size, 'href' => $permalink));
 }
function jetpack_og_get_image($width = 200, $height = 200, $max_images = 4)
{
    // Facebook requires thumbnails to be a minimum of 200x200
    $image = '';
    if (is_singular() && !is_home()) {
        global $post;
        $image = '';
        // Attempt to find something good for this post using our generalized PostImages code
        if (class_exists('Jetpack_PostImages')) {
            $post_images = Jetpack_PostImages::get_images($post->ID, array('width' => $width, 'height' => $height));
            if ($post_images && !is_wp_error($post_images)) {
                $image = array();
                foreach ((array) $post_images as $post_image) {
                    $image[] = $post_image['src'];
                }
            }
        }
    } else {
        if (is_author()) {
            $author = get_queried_object();
            if (function_exists('get_avatar_url')) {
                // Prefer the core function get_avatar_url() if available, WP 4.2+
                $image = get_avatar_url($author->user_email, array('size' => $width));
            } else {
                $has_filter = has_filter('pre_option_show_avatars', '__return_true');
                if (!$has_filter) {
                    add_filter('pre_option_show_avatars', '__return_true');
                }
                $avatar = get_avatar($author->user_email, $width);
                if (!$has_filter) {
                    remove_filter('pre_option_show_avatars', '__return_true');
                }
                if (!empty($avatar) && !is_wp_error($avatar)) {
                    if (preg_match('/src=["\']([^"\']+)["\']/', $avatar, $matches)) {
                    }
                    $image = wp_specialchars_decode($matches[1], ENT_QUOTES);
                }
            }
        }
    }
    if (empty($image)) {
        $image = array();
    } else {
        if (!is_array($image)) {
            $image = array($image);
        }
    }
    // First fall back, blavatar
    if (empty($image) && function_exists('blavatar_domain')) {
        $blavatar_domain = blavatar_domain(site_url());
        if (blavatar_exists($blavatar_domain)) {
            $image[] = blavatar_url($blavatar_domain, 'img', $width);
        }
    }
    // Second fall back, Site Logo
    if (empty($image) && (function_exists('jetpack_has_site_logo') && jetpack_has_site_logo())) {
        $image[] = jetpack_get_site_logo('url');
    }
    // Third fall back, Site Icon
    if (empty($image) && (function_exists('jetpack_has_site_icon') && jetpack_has_site_icon())) {
        $image[] = jetpack_site_icon_url(null, '512');
    }
    // Fourth fall back, blank image
    if (empty($image)) {
        $image[] = apply_filters('jetpack_open_graph_image_default', 'https://s0.wp.com/i/blank.jpg');
    }
    return $image;
}