Skip to content

Instantly share code, notes, and snippets.

@daltonrooney
Forked from mikemanger/typekit.editor.php
Created April 17, 2017 22:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save daltonrooney/900fc4d3bdd03977853dc36d9c6f1991 to your computer and use it in GitHub Desktop.
Save daltonrooney/900fc4d3bdd03977853dc36d9c6f1991 to your computer and use it in GitHub Desktop.
Add a TypeKit font to the TinyMCE editor in WordPress.
add_filter( 'mce_external_plugins', 'my_theme_mce_external_plugins' );
function my_theme_mce_external_plugins( $plugin_array ) {
$plugin_array['typekit'] = get_template_directory_uri() . '/typekit.tinymce.js';
return $plugin_array;
}
/* global tinymce */
tinymce.PluginManager.add( 'typekit', function( editor ) {
function addScriptToHead() {
// Get the DOM document object for the IFRAME
var doc = editor.getDoc();
// Create the script we will add to the header asynchronously
var jscript = "(function() {\n\
var config = {\n\
kitId: 'xxxxxxx'\n\
};\n\
var d = false;\n\
var tk = document.createElement('script');\n\
tk.src = '//use.typekit.net/' + config.kitId + '.js';\n\
tk.type = 'text/javascript';\n\
tk.async = 'true';\n\
tk.onload = tk.onreadystatechange = function() {\n\
var rs = this.readyState;\n\
if (d || rs && rs != 'complete' && rs != 'loaded') return;\n\
d = true;\n\
try { Typekit.load(config); } catch (e) {}\n\
};\n\
var s = document.getElementsByTagName('script')[0];\n\
s.parentNode.insertBefore(tk, s);\n\
})();";
// Create a script element and insert the TypeKit code into it
var script = doc.createElement( 'script' );
script.type = 'text/javascript';
script.appendChild( doc.createTextNode( jscript ) );
// Add the script to the header
doc.getElementsByTagName( 'head' )[0].appendChild( script );
}
// Support both TinyMCE 3 and 4.
if ( 3 < parseInt( tinymce.majorVersion ) ) {
editor.on( 'preInit', function() {
addScriptToHead();
});
} else {
editor.onPreInit.add( function( editor ) {
addScriptToHead();
});
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment