我正在尝试用wp_editor()
替换textarea我的textarea表单元素如下所示:
<textarea name="post_text" id="post_text" rows="3"><?php echo $content; ?></textarea>
然后我有:
wp_editor( $content, 'post_text' );
我得到的问题是表单textarea和wp_editor textarea都在页面上输出。为什么两个textareas都显示?我只需要一个textarea来显示。一切都很好,我只有2 textareas显示的问题。
编辑:是否就像在表单的textarea上放一个display: none;
一样简单,只显示wp_editor()textarea?这似乎有效,但感觉有点hackish。
答案 0 :(得分:9)
我找到了解决方案。您可以使用第三个参数传递参数数组。现在这很明显,如食典委所述:http://codex.wordpress.org/Function_Reference/wp_editor
有点令人困惑(我的问题的根源)是$ editor_id可能只包含小写字母。因此,如果您的表单处理脚本正在寻找带有下划线的内容(就像我的那样),那么您需要这样做:
$settings = array( 'textarea_name' => 'post_text' )
wp_editor( $content, $editor_id, $settings );
注意你不能这样做:
wp_editor( $content, 'post_text' );
这是我出错的地方。
答案 1 :(得分:2)
如果您在代码中添加了文本区域
<textarea></textarea>
当然它会出现在页面上,这就是它应该做的事情。除非有一些我误解的东西,否则我看不出这是怎么回事。
像你建议的那样,我认为这会做你想要的:
<textarea style="display:none" name="post_text" id="posttext" rows="3"><?php echo $content; ?></textarea>
它仍然会在功能上,但看不见。
答案 2 :(得分:1)
以下PHP代码变成了一个文本区域,其名称和ID为“ expirationErrorMessage”。
$id = "expirationErrorMessage";
$name = 'expirationErrorMessage';
$content = esc_textarea( stripslashes( $yourtext ) );
$settings = array('tinymce' => true, 'textarea_name' => "expirationErrorMessage");
wp_editor($content, $id, $settings);
-拉维·贾亚戈帕尔(Ravi Jayagopal)
答案 3 :(得分:0)
拨打template page
,在tinyMCE
template page
placeholder
CONTENT_EDITOR
上str_replace
,然后使用php tinyMCE
。将template
添加到function add_tinymce_to_page(){
$creatorHTML = file_get_contents(
'your-template-pafe.php',
TRUE
);
$editorHTML = generate_content_with_editor();
$creatorHTML = str_replace(
'CONTENT_EDITOR',
$editorHTML,
$creatorHTML
);
return $creatorHTML;
}
function generate_content_with_editor(){
ob_start();
wp_editor( '', 'tinymcecontenteditor' );
$editor_contents = ob_get_contents();
ob_get_clean();
return $editor_contents;
}
内容的功能:
php
我使用ob
的{{1}},因此在呈现整页之前不显示tinyMCE
。
答案 4 :(得分:0)
不是向页面输出新的文本区域(通过wp_editor()
)并将原始文本区域隐藏为display: none;
,而是可以执行此操作:
add_action('admin_init', '20331501_convert_textarea_to_wysiwyg');
function 20331501_convert_textarea_to_wysiwyg(){
wp_enqueue_editor();
add_action( 'admin_print_footer_scripts', function() {
?>
<script>
jQuery(function(){
wp.editor.initialize('the-id-of-your-textarea-without-the-#', {
setup: function (editor) {
editor.on('change', function () {
editor.save();
});
}
});
});
</script>
<?php
}, 10, 2 );
}
此代码段将现有 textarea转换为wysiwyg。 editor.save()
负责更新textarea值,以便在提交表单时传递它。 (credits to @Dan Malcolm)