用WordPress替换textarea TinyMCE wp_editor()

时间:2013-12-02 15:10:20

标签: php wordpress tinymce

我正在尝试用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。

5 个答案:

答案 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)

https://S3MediaVault.com

答案 3 :(得分:0)

拨打template page,在tinyMCE template page placeholder CONTENT_EDITORstr_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