Github Gist Shortcode

This code will detect links to Github Gist in posts and replace them with shortcodes then shortcodes will be replaced with embeded gist. Just add the code to your functions.php.

[gist id=1147076]
[gist id=1147076 file=annotated.js]

This works perfectly in most cases but there is one(or more?) case when it doesn’t work as it should:
If we add this url to our post it will display all files from this gist. It’s because file name in gist is uppercased. But this one will work corectly:

Code Snippet:

// &#91;gist id="ID" file="FILE"&#93;
function gist_shortcode($atts) {
  return sprintf(
    '<script src=""></script>', 
    $atts['file'] ? '?file=' . $atts['file'] : ''
} add_shortcode('gist','gist_shortcode');

// Remove this function if you don't want autoreplace gist links to shortcodes
function gist_shortcode_filter($content) {
  return preg_replace('/https:\/\/\/([\d]+)[\.js\?]*[\#]*file[=|_]+([\w\.]+)(?![^<&#93;*<\/a>)/i', '[gist id="${1}" file="${2}"]', $content );
} add_filter( 'the_content', 'gist_shortcode_filter', 9);

Posted in Snippets