有没有办法将TinyMCE添加到我自己的WordPress插件中?
我的后端脚本中有一个textarea,并希望将此区域变为TinyMCE WYSIWYG可编辑字段。有没有办法做到这一点?
此代码对我不起作用:
<?php
wp_tiny_mce(false,array("editor_selector" => "test"));
?>
<textarea class="test" id="test" name="test"></textarea>
它显示了javascript错误
f is undefined
Firebug截图:
这也不起作用:
<textarea class="theEditor" id="videogalerie-add_description" name="videogalerie-add_description"></textarea>
答案 0 :(得分:35)
使用wp_editor()函数在WordPress 3.3中更容易做到。
我正在开发一个将TinyMCE实例添加到主题选项页面的插件。这是它的样子:
// Add TinyMCE visual editor
wp_editor( $content, $id );
$ content 是存储的内容, $ id 是字段的名称。也可以传递选项来自定义TinyMCE功能,查看WordPress Codex以获取更多详细信息。
答案 1 :(得分:11)
Camden已经回答了这个问题,但是如果有人需要完整的代码...请务必挂钩admin_head,挂钩到admin_enqueue_scripts将导致它在其他脚本(如jQuery)之前加载,因此无法正常工作。
add_action("admin_head","load_custom_wp_tiny_mce");
function load_custom_wp_tiny_mce() {
if (function_exists('wp_tiny_mce')) {
add_filter('teeny_mce_before_init', create_function('$a', '
$a["theme"] = "advanced";
$a["skin"] = "wp_theme";
$a["height"] = "200";
$a["width"] = "800";
$a["onpageload"] = "";
$a["mode"] = "exact";
$a["elements"] = "intro";
$a["editor_selector"] = "mceEditor";
$a["plugins"] = "safari,inlinepopups,spellchecker";
$a["forced_root_block"] = false;
$a["force_br_newlines"] = true;
$a["force_p_newlines"] = false;
$a["convert_newlines_to_brs"] = true;
return $a;'));
wp_tiny_mce(true);
}
}
然后在模板中的某处插入常规textarea:
<textarea id="intro"></textarea>
答案 2 :(得分:7)
以下示例适用于我。只需确保在$ a [“elements”]变量中使用要选择的textarea的id。
假设你有一个id为'intro'的textarea:
// attach the tiny mce editor to this textarea
if (function_exists('wp_tiny_mce')) {
add_filter('teeny_mce_before_init', create_function('$a', '
$a["theme"] = "advanced";
$a["skin"] = "wp_theme";
$a["height"] = "200";
$a["width"] = "800";
$a["onpageload"] = "";
$a["mode"] = "exact";
$a["elements"] = "intro";
$a["editor_selector"] = "mceEditor";
$a["plugins"] = "safari,inlinepopups,spellchecker";
$a["forced_root_block"] = false;
$a["force_br_newlines"] = true;
$a["force_p_newlines"] = false;
$a["convert_newlines_to_brs"] = true;
return $a;'));
wp_tiny_mce(true);
}
&GT;
答案 3 :(得分:4)
微小的mce函数wp_tiny_mce现在已被删除。对于最新的wordpress,你想使用wp_editor
$initial_data='What you want to appear in the text box initially';
$settings = array(
'quicktags' => array('buttons' => 'em,strong,link',),
'text_area_name'=>'extra_content',//name you want for the textarea
'quicktags' => true,
'tinymce' => true
);
$id = 'editor-test';//has to be lower case
wp_editor($initial_data,$id,$settings);
有关更多说明,请查看wordpress中的文档
答案 4 :(得分:2)
关注here和there的指南(感谢this),以下是我如何设法在wordpress 3.0.5上运行的工作:
<?php
add_action("admin_print_scripts", "js_libs");
function js_libs() {
wp_enqueue_script('tiny_mce');
}
wp_tiny_mce( false , // true makes the editor "teeny"
array(
"editor_selector" => "tinymce_data"
)
);
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
$('a.toggleVisual').click(function() {
console.log(tinyMCE.execCommand('mceAddControl', false, 'tinymce_data'));
});
$('a.toggleHTML').click(function() {
console.log(tinyMCE.execCommand('mceRemoveControl', false, 'tinymce_data'));
});
});
</script>
<form method="post" action="">
<ul>
<li>
<span id="submit"><input class="button" type="submit"></span>
<p id="toggle" align="right"><a class="button toggleVisual">Visual</a><a class="button toggleHTML">HTML</a></p>
</li>
<li><textarea style="width:100%;" class="tinymce_data" id="tinymce_data" name="tinymce_data"></textarea></li>
</ul>
</form>
答案 5 :(得分:1)
我遇到了类似的问题,class="theEditor"
也没有帮助我(起初)。我使用的是不包含默认编辑器的自定义帖子类型(即supports
参数不包含'editor'
)。
这意味着WordPress不包含TinyMCE代码。一旦我添加了
add_action( 'admin_print_footer_scripts', 'wp_tiny_mce', 25 );
到我的functions.php(基于general-template.php中the_editor
函数中的代码),它工作得很好(class="theEditor"
)。
答案 6 :(得分:1)
测试并使用wordpress 3.3.1
添加到函数或插件文件。
<?php
add_filter('admin_head','ShowTinyMCE');
function ShowTinyMCE() {
// conditions here
wp_enqueue_script( 'common' );
wp_enqueue_script( 'jquery-color' );
wp_print_scripts('editor');
if (function_exists('add_thickbox')) add_thickbox();
wp_print_scripts('media-upload');
if (function_exists('wp_tiny_mce')) wp_tiny_mce();
wp_admin_css();
wp_enqueue_script('utils');
do_action("admin_print_styles-post-php");
do_action('admin_print_styles');
}
?>
添加新内容..
<?php the_editor($id='content');?>
用于编辑我的内容
<?php the_editor($mySavedContent); ?>
这将包括在插件或模板文件中生成tinyMCE textarea所需的全部脚本/ css和代码。
希望这会有所帮助..
中号
答案 7 :(得分:1)
我遇到了很多麻烦。在搜索了一整天并尝试了几十个代码示例之后,我无法获得Wordpress主题选项来将MCE值保存到数据库中。我尝试了一切,jQuery的答案,隐藏的字段等等。这些都不会对我有用,可能是因为我在某个地方错过了一步。
最后我找到了这个页面:http://wptheming.com/options-framework-theme/
从Github&amp; amp;按照指示安装(简单)。安装后,主题选项中的最后一个选项卡具有MCE编辑器。输入一些测试段落。现在打开下载中的index.php文件,查看如何在页面中包含每个东西的示例。例如,我打开footer.php并添加一些代码。
我需要做的唯一编辑是:
<?php
$ft = of_get_option('example_editor', 'no entry');
$format_ft = wpautop( $ft, false );
echo ($format_ft);
?>
来自Wordpress的函数wpautop()添加段落标记,因为它们从未保存在wp数据库中。我将该代码放在我的页脚中以显示MCE的内容。