Instantly share code, notes, and snippets.

Embed
What would you like to do?
Automatically embed Dribbble shots into WordPress content
<?php
/*
Plugin Name: Dribbble Shot Embed
Description: Automatically embed a shot into your WordPress site just by dropping the URL in place.
Version: 1.0.0.RC.1
Author: Nick Ohrn of Plugin-Developer.com
Author URI: http://plugin-developer.com/
*/
function dribbble_shot_embed_callback($matches, $attr, $url, $rawattr) {
$output = false;
if(($id = isset($matches[1]) ? $matches[1] : false)) {
$key = sprintf('dribbble_shot_%d', $id);
$shot = get_transient($key);
if(false === $shot) {
$response = wp_remote_get(sprintf('http://api.dribbble.com/shots/%d', $id));
if(!is_wp_error($response)) {
$shot = json_decode(wp_remote_retrieve_body($response), true);
if($shot) {
set_transient($key, $shot, DAY_IN_SECONDS);
}
}
}
if($shot) {
$title = esc_attr($shot['title']);
$url = esc_attr(esc_url($shot['url']));
$image_height = absint($shot['height']);
$image_src = esc_attr(esc_url($shot['image_url']));
$image_width = absint($shot['width']);
$output = sprintf('<a href="%1$s" target="_blank" title="%2$s"><img alt="%2$s" src="%3$s" height="%4$d" width="%5$d" /></a>', $url, $title, $image_src, $image_height, $image_width);
}
}
return $output;
}
function dribbble_shot_embed_wp_embed_register_handler() {
wp_embed_register_handler('dribbble-shot-embed', '#^http://dribbble.com/shots/(\d+)#i', 'dribbble_shot_embed_callback');
}
add_action('init', 'dribbble_shot_embed_wp_embed_register_handler');
@nickohrn

This comment has been minimized.

Show comment
Hide comment
@nickohrn

nickohrn Mar 11, 2014

This is super rough and something I threw together as a proof of concept more than anything. If you're interested, please let me know and I can turn this into something a little more robust :)

Owner

nickohrn commented Mar 11, 2014

This is super rough and something I threw together as a proof of concept more than anything. If you're interested, please let me know and I can turn this into something a little more robust :)

@RomanSima

This comment has been minimized.

Show comment
Hide comment
@RomanSima

RomanSima Nov 15, 2015

Doesn't work.

RomanSima commented Nov 15, 2015

Doesn't work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment