#1 楼
假设您的自定义帖子类型称为Properties
,则可以使用类似于以下代码的框来添加框,以容纳其他的tinyMCE编辑器:box将被应用到它,
wysiwyg-editor-2
是meta box的标题,Second Column
是将打印出meta box的HTML的函数,second_column_box
是我们的自定义帖子类型,properties
是meta box的位置,并且normal
指定应该在页面中尽可能高地显示它。 (通常在默认的tinyMCE编辑器下面)。然后,以这作为最基本的示例,您必须将tinyMCE编辑器附加到文本区域。我们仍然必须定义我们的
high
函数,该函数将为meta框打印HTML,因此这与任何执行此操作的地方一样好:function register_meta_boxen() {
add_meta_box("wysiwyg-editor-2", "Second Column", "second_column_box",
"properties", "normal", "high");
}
add_action('admin_menu', 'register_meta_boxen');
有一个我不确定如何克服几个问题。 tinyMCE编辑器将嵌套在一个metabox中,这可能不是理想的选择,并且它不具有在HTML和Visual编辑模式之间切换以及普通后期编辑器具有的媒体插入命令的功能。切换模式似乎被定义为第一个参数是ID的函数,但它似乎也已编码到wp-tinymce脚本中。可以使用内置的tinyMCE函数来执行此操作,但这会在完整的tinyMCE和基本文本区域之间更改文本区域,而无需任何WP HTML插入按钮。
评论
“ Meta_boxen”?太棒了!我以为我是唯一的一个。稍后将为您提供解决方案。
–mfields
2011-3-5在12:44
Thomas McDonalds解决方案在3.1中对我不起作用-3.1中有没有办法做到这一点?
–user4484
2011年4月6日14:52
#2 楼
首先:非常感谢@Thomas McDonald的回答;我需要弄清楚@Paul Sheldrake提出的相同问题,并且Thomas的代码使我朝着正确的方向开始。不幸的是,我随后陷入困境,因为我需要将布局从默认更改为更简单,更小布局,因为我需要在侧面metabox中使用TinyMCE。我几乎到处都在寻找解决方案,尤其是在MoxieCode TinyMCE Wiki和TinyMCE技巧与方法论坛上,却一无所获! 1我发现的所有内容都说明了如何使用
theme
设置width
,height
,tinyMCE.init({...})
等,但是当您使用tinyMCE.execCommand("mceAddControl")
时显然无法使用它。当我在文章中遇到多个TinyMCE 3实例时,我很沮丧汉密尔顿·蔡(Hamilton Chua)的一页,他把它钉了!他的解决方案是在调用
tinyMCE.settings
之前先分配tinyMCE.execCommand("mceAddControl")
,例如:<?php
$id = "sidebar-content";
$script = <<<EOT
<script type="text/javascript">
jQuery(document).ready(function($) {
$("#{$id}").addClass("mceEditor");
if ( typeof( tinyMCE ) == "object" &&
typeof( tinyMCE.execCommand ) == "function" ) {
tinyMCE.settings = {
theme : "advanced",
mode : "none",
language : "en",
height:"200",
width:"100%",
theme_advanced_layout_manager : "SimpleLayout",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : ""
};
tinyMCE.execCommand("mceAddControl", true, "{$id}");
}
});
</script>
<textarea id="sidebar-content" name="sidebar-content"></textarea>
EOT;
可悲的是,这确实并不难,但是在我能找到的其他地方都没有记录。令人惊讶的是,几乎没有其他人遇到过此问题。
所以无论如何,以上代码以我的客户端所需的格式/布局生成了第二个TinyMCE:
(来源:mikeschinkel.com)
因此,如果您使用上面的@Thomas McDonald代码,则发现您有任何需要修改布局的内容,请务必查看Hamilton Chua的精彩文章(感谢Ham!):
多个TinyMCE 3实例在一页上
PS如果您做某事甚至略有错误,TinyMCE可能根本不会显示。例如,在我的情况下,我首先使用
theme: "simple"
,但一无所获,花了一个多小时才意识到我只需要使用theme: "advanced"
。因此,如果您发现TinyMCE无法正常工作,请务必尝试进行更改,这可能是类似的问题。 (顺便说一句,我没有尝试过其他主题,也没有探索其他可用主题;如果您发现其他有用的主题,请在下面发表评论。)脚注
1:非常令人沮丧!在使用WordPress答案一个多月之后,我现在希望能以与此处相同的质量水平找到我所有问题的答案,而在其他地方我通常会感到失望!
评论
迈克,您错过了$ script之后的等号,并且heredoc也没有结束。 EOT;。除了小错误,这是一个很好的工作示例。
– t31os
2010年11月13日在8:01
@ t31os-感谢您告诉我。不知道我怎么想念那些。我通常会进行测试,然后从工作代码中复制答案。去搞清楚!
– MikeSchinkel
2010年11月13日在10:16
使用此解决方案还会在3.1中为我设置普通的可视编辑器。
–mfields
2011-3-5 14:02
@mfields-Bummer认为3.1破坏了很多东西。 :-(
– MikeSchinkel
2011年3月5日15:06
希望引起您对本文的关注,因为它可能会澄清一些问题:dannyvankooten.com/450/…
– marfarma
2011年10月8日,0:05
#3 楼
由于我发现本文是Google的第一篇文章,因此我只想评论一下WP现在提供了处理此类任务的功能。在
add_meta_box
函数中,添加以下代码-> wp_editor( $content, $editor_id, $settings = array() );
要添加TinyMCE编辑器的地方
参考:
wp_editor
评论
答案不应该只是简单的链接。他们实际上应该是一个答案,而不是某个人可能会找到答案的路线。请帮助防止链接腐烂,编辑您的答案,并提供必要的信息,以帮助OP和以后的访客解决他们的问题。
– kaiser
2014年10月12日20:50
#4 楼
默认编辑器tinymce由wp-admin / includes / post.php中的一个名为wp_tiny_mce()的函数加载。在源代码的1350行中查找。在1478行中有一系列设置。其中一个选项显然指定了将textarea选择器应用于javascript编辑器。我正在阅读基斯(Keighl)在他博客上的这篇文章,指出我对此的看法。阅读文章,也许有一种方法可以在管理部分插件中调用wp_tiny_mce()并将其应用于您创建的第二个文本区域。#5 楼
我是通过将“ theEditor”作为类属性添加到textarea来获得的:<div style="background: #FFF; border: 1px solid #CCC;"><textarea id="my_details_field" name="my_details" class="theEditor" rows="20" style="width: 100%;"><?=get_post_meta($post->ID, 'my_details', TRUE)?></textarea></div>
评论
您需要哪种所见即所得的配置?全面板包括上传图片,全屏模式等?相关问题:wordpress.stackexchange.com/questions/53/…
贝尔特(Bueltge)有一篇很好的文章,展示了如何完成该任务:wpengineer.com/1991/example-how-to-add-meta-boxes-to-edit-area
对于客户项目,我确实需要回答这个问题。感谢您的提问!
MikeSchinkel-我是WordPress的新手;我应该把您发布的代码放在哪里?