I am trying to replace a textarea with wp_editor()
My textarea form element looks like this:
<textarea name="post_text" id="post_text" rows="3"><?php echo $content; ?></textarea>
Then I have:
wp_editor( $content, 'post_text' );
The problem I am getting is both the form textarea and the wp_editor textarea are outputted on the page. Why are both textareas displaying? I only need one textarea to display. Everything saves fine, I just have this problem of 2 textareas showing.
EDIT: Is it as simple as putting a display: none;
on my form's textarea so just the wp_editor() textarea displays? That seems to work but feels a bit hackish.
If you put a text area in your code
Then of course it's going to show up on the page, that's what it's supposed to do. Unless there's something I'm misunderstanding, I don't see how that doesn't make sense.
Like you suggested, I think this will do what you want:
It will still be there functionally, but invisible.
I found the solution. You can use a third parameter to pass an array of arguments. Now this is pretty obvious as outlined in the Codex: http://codex.wordpress.org/Function_Reference/wp_editor
What is a little confusing (the source of my problem) is $editor_id may only contain lowercase letters. So if your form processing script is looking for something with underscores in it (as mine was) then you'll need to do this:
Note you can't do this:
Which is where I went wrong.
Instead of outputting a new textarea to the page (by
wp_editor()
) and hiding the original textarea withdisplay: none;
, one can do this:This code snippet converts the existing textarea to wysiwyg. The
editor.save()
takes care of updating the textarea value so that it gets passed along when one submits the form. (credits to @Dan Malcolm)Call your
template page
where you wish to placetinyMCE
, on thattemplate page
place aplaceholder
such asCONTENT_EDITOR
and use phpstr_replace
function to addtinyMCE
to thattemplate
content:I use
php
'sob
sotinyMCE
does not display before full page is rendered.