If you’ve been following along with previous articles you know that over the last few days I’ve been working through a series on adding a TinyMCE button to WordPress.
Though this post isn’t exactly part of that series, it’s tangentially related and I thought it was something worth covering in case someone else stumbles across their problem in their work or if the code that shows up later in said series shows what’s up but doesn’t do a great job explaining it.
TinyMCE Dependencies in WordPress
Remember that when adding a button to the post editor in WordPress, a portion of the code is going to be writing a plugin for the TinyMCE editor (since that’s what the actual post editor is).
In a sense, you’re placing a plugin within a plugin. That is, you’re placing a TinyMCE plugin within a WordPress plugin.
Anyway, in an attempt to modularize the code, you’ll likely have at least a couple of files that power the plugin – one of which that will be specifically for the TinyMCE button and one of which that will be specifically for other logic that fires when the button is clicked (like displaying a modal or something like that).
Again, this assumes that you’re working with Ajax so you’re likely pulling in information from another file.
In order to make sure the dependencies are properly added, then you’ll need to take advantage of jQuery’s getScript function. As per the API, this function will:
For the purists, you don’t have to use jQuery, but since it’s included in WordPress and generally used for most WordPress-based code, I’ve opted to use it in this example.
init method. Later in the series, we’ll talk about some of the things that are to be included in that method but one of the things that’s needed is adding a command to the post editor button.
getScript, add the file, and then run the rest of our code.
The gist of the code looks something like this:
Note that in the code above, I’m making a call to
acme_init_selector. This method is actually defined in the dependency that’s being added via
getScript so this is how to can set the whole thing in motion.
I’ll likely expand on this more in a future post.
Anyway, as previously mentioned, I’ll talk more about the rest of the code that will reside in the
init method later in the series, but I wanted to make sure I covered and explained this particular aspect of writing the plugin in its own post.
It’s something that may be useful for those who are already doing work with the post editor, and it’s also something that would take a bit longer to explain within the context of another post.