Use TinyMCE Throughout WordPress Application

We are familiar with TinyMCE from the WordPress WYSIWYG editor, and it is a fantastic tool to quickly generate markup that is semantic and XHTML compliant. But what if what we want to offer it in other parts of our application? One noticeable example would be on single post pages so your visitors can use the editor. Here is the code to use, and it goes in your functions.php file in your current theme directory (if you don’t have one then just add it).

function addtinymce() {
    echo '<script language="javascript" type="text/javascript" src="/wp-includes/js/tinymce/tiny_mce.js"></script>';
    echo '<script language="javascript" type="text/javascript">';
    echo 'tinyMCE.init({mode : "textareas", theme : "advanced", theme_advanced_buttons1 : "bold,italic,strikethrough,bullist,numlist,outdent,indent,link,unlink", theme_advanced_buttons2 : "", theme_advanced_buttons3 : "", language : "en",theme_advanced_toolbar_location : "top", theme_advanced_toolbar_align : "left"});';
    echo '</script>';
} ?>

Then you simple add the following function in your header.php before the closing head statement.

<?php addtinymce(); ?>

Notice that I didn’t have to install anything, because I’m using the TinyMCE code that exists in the core (under the wp-includes directory). So, whenever WP updates the code then you will receive the updates automatically, and this is going to happen when 2.3 is released.

You might want to consider where you want to actually load all that JavaScript as it could slow down the loading of your site and increase bandwidth. To circumvent this we should load it only on the pages that it is used via WP conditional tags. Here is an example to load it only on the post reply page. This logic can replace the second code block above.

<?php 
if (is_single()) {
  addtinymce();
}
else {}
?>

Feel free to add multiple conditions to this logic, and you can also configure the TinyMCE options all your heart desires.

15 Responses

  1. Scot Hacker June 27, 2007 / 3:34 am

    Cool! Do you know whether it’s possible to just use it on post pages in QuickTags mode, i.e. with simple buttons but without the full rich text editor?

    I know you’ve linked to the docs above, but just thought you might be able to give me a leg up, if you’ve played with this before. Thanks.

  2. Chris Poteet June 27, 2007 / 3:45 am

    @Scott: You could by adding a filter to the code, but why would you want to do that? What’s wrong with the rich text editor?

  3. Scot Hacker June 27, 2007 / 6:14 am

    Chris – Too heavy/slow loading. I think most people prefer commenting in plain text, but wouldn’t mind a little assist with hrefs etc.

    So there’s no way in that init line to specify the simplified version?

  4. Chris Poteet June 28, 2007 / 3:39 am

    @Scott: You could change the “theme : advanced” to “theme: simple”, but the toolbar will then have to go along the bottom of the textarea. Regardless, it will turn it into a rich text area.

    How slow loading is it for you? It can’t be that bad.

  5. Scot Hacker June 28, 2007 / 8:24 am

    Hmm. Basically I was hoping to reproduce a simplified version of the post editor in wp-admin when rich text editing is disabled in the profile. WP gets it to appear above the text area, rather than below.

    Hard to explain, but for some reason I have little interest in using the rich editor for user comments (for the same reason you’re not using it? :)

  6. Chris Poteet June 28, 2007 / 11:55 am

    @Scott: Ah, I see what you’re wanting, and I wouldn’t know how to hack around that. I think it’s an either/or proposition.

  7. Scot Hacker June 29, 2007 / 4:00 am

    Thanks for your tips on this. I’ll give it a whirl one of these days.

  8. Cau September 2, 2007 / 4:38 am

    There is another way, using WP native functions (loads the editor with the default WP configurations):

    if(user_can_richedit()) { // if rich editor is enabled
    wp_enqueue_script(‘tiny_mce’);
    wp_enqueue_script(‘wp_tiny_mce’);
    }

  9. Sebastian August 19, 2009 / 8:08 am

    Hey,

    your highlight function for google search related visitors also puts the highlight in the code block!

    tinyMCE.init

    just want to let you know!

    • Chris Poteet September 4, 2009 / 12:44 am

      @Sebastian: Thanks. That is expected behavior.

  10. Doug November 13, 2009 / 4:32 pm

    yeah if you arrive here from Google the stupid search term highlight deal makes the code unusable. Can’t copy paste it and most of it is invisible.

  11. Chris Poteet November 13, 2009 / 4:39 pm

    @Doug: Sorry about that. My plugin was screwed up. Now it should work although I haven’t tested this code in a while.

  12. Wijnand August 5, 2010 / 8:43 pm

    I would like to have some syntaxhighlighting-button to this script, is that possible?

    So you can show php/C#/etc. code with colors in your page?

Comments are closed. If you have a question please contact me.