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="https://gist.github.com/%s.js%s"></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://gist.github.com/([d]+)[.js?]*[#]*file[=|_]+([w.]+)(?![^<&#93;*</a>)/i', '[gist id="${1}" file="${2}"]', $content );
} add_filter( 'the_content', 'gist_shortcode_filter', 9);

Comments  Leave a Reply

Add a Comment

We're glad you have chosen to leave a comment. Please keep in mind that all comments are moderated according to our privacy policy, and all links are nofollow. Do NOT use keywords in the name field. Let's have a personal and meaningful conversation.

WordPress Launch Checklist

The Ultimate WordPress Launch Checklist

We've compiled all the essential checklist items for your next WordPress website launch into one handy ebook.
Yes, Send Me the Free eBook!