WP_EDITOR文本区值未更新

时间:2012-01-20 作者:Mike

我正在使用*_add_form_fields 将字段添加到自定义分类的操作。其中一个字段是wp\\u editor()。

我面临的问题是,当我在页面上这样输出WordPress编辑器时:

wp_editor(\'test\', \'mydescription\', array(\'textarea_name\' => \'my_description\')); 
然后,如果我单击页面上的编辑器并将默认值从testsomething else 这个$_POST[\'my_description\'] 变量仍设置为test

我是否应该向编辑器添加其他设置?我无法更改textarea的值有什么原因吗?

EDIT

下面是一个非常简单的测试用例,它显示了这种情况的发生。将此放在您的函数中。然后创建一个新的tag. “my\\u description”的发布值不会更改。

class Test{

    function __construct() {

        add_action(\'add_tag_form_fields\', array($this, \'add_tag_form_fields\'));

        add_action(\'created_term\', array($this, \'created_term\'));
    }

    function add_tag_form_fields($tag){

        if ( current_user_can( \'publish_posts\' ) ): ?>

        <div class="form-field">
            <?php wp_editor(\'test\', \'mydescription\', array(\'textarea_name\' => \'my_description\')); ?>
        </div>

        <?php
    }

    function created_term($tag){
        echo \'<pre>\';
        print_r($_POST);
        echo \'</pre>\';
            die();
    }
}
new Test();

EDIT

这仅在附加到“created\\u term”操作时发生。如果您附加到“edited\\u terms”,它将按预期工作,我认为这是在创建术语页面上使用ajax的结果。。。我已经更新了测试代码来显示这一点。

3 个回复
最合适的回答,由SO网友:ungestaltbar 整理而成

蒂尼姆斯<textarea> 元素最初不被使用的serialize函数看到:

$.post(
    ajaxurl,
    $(\'#addtag\').serialize(), function(r) {
        // Content here.
    }
});
你需要打电话tinyMCE.triggerSave() 使其可见。

下面是一个简单的片段,应该可以做到这一点:

jQuery(\'#submit\').mousedown( function() {
    tinyMCE.triggerSave();
});
此文件位于外部文件中,已排队wp_enqueue_script(); 这对我进行的测试有效。

SO网友:Bainternet

在您的edited_terms 保存值所需的函数add_tag_form_fields您需要更换test 使用保存的数据。

类似于:

class Test{

    function __construct() {

        //do_action(\'add_tag_form_fields\', $taxonomy);
        add_action(\'add_tag_form_fields\', array($this, \'add_tag_form_fields\'));

        //do_action("edited_terms", $term_id, $tt_id, $taxonomy);
        add_action(\'edited_terms\', array($this, \'edited_terms\'));
    }

    function add_tag_form_fields($term){

        if ( current_user_can( \'publish_posts\' ) ): ?>

        <div class="form-field">
            <?php 
            $saved = get_option(\'termmeta_\'.$term->term_id);
            $saved = (empty($saved))? \'test\': $saved;
            wp_editor($saved, \'mydescription\', array(\'textarea_name\' => \'my_description\')); ?>
        </div>

        <?php
    }

    function edited_terms($term_id){
        if (isset($_POST[\'mydescription\'])){
            update_option(\'termmeta_\'.$term_id,$_POST[\'mydescription\']);
        }
    }
}
new Test();
现在,如果您想更轻松地将所有类型的额外字段添加到标记/类别或自定义分类法中,请编辑表单,而无需重新设计轮子,请查看TAX Meta Class

SO网友:ractoon

根据法典wp_editor 第一个参数应该是内容。因此,与其“测试”,不如$_POST[\'my_description\'] 如果这是您希望的初始内容。

结束

相关推荐