我正在使用*_add_form_fields
将字段添加到自定义分类的操作。其中一个字段是wp\\u editor()。
我面临的问题是,当我在页面上这样输出WordPress编辑器时:
wp_editor(\'test\', \'mydescription\', array(\'textarea_name\' => \'my_description\'));
然后,如果我单击页面上的编辑器并将默认值从
test
到
something 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的结果。。。我已经更新了测试代码来显示这一点。
最合适的回答,由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