有没有一种方法可以在自定义帖子类型中获取n个Wysiwyg编辑器的数量?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/436

  •  16-10-2019
  •  | 
  •  

是否可以为自定义帖子类型提供多个Wysiwyg编辑器?例如,如果我有一个2列布局,我想为一个列提供一个编辑器,另一列编辑器为另一列。

有帮助吗?

解决方案

说您的自定义帖子类型被称为 Properties, ,您将使用与此类似的代码添加框来保存其他Tinymce编辑器:

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');

wysiwyg-editor-2 是元框将应用于它的ID, Second Column 是meta盒将拥有的标题, second_column_box 是将打印出元框的HTML的功能, properties 是我们的自定义帖子类型, normal 是元盒的位置, high 指定应在页面中尽可能高。 (通常低于默认的Tinymce编辑器)。

然后,以最基本的示例为例,您必须将Tinymce编辑器附加到Textarea。我们仍然必须定义我们的 second_column_box 将打印元框的HTML的功能,因此这与任何执行此操作一样好:

function second_column_box() {
    echo <<<EOT
    <script type="text/javascript">
jQuery(document).ready(function() {
    jQuery("#tinymce").addClass("mceEditor");
    if ( typeof( tinyMCE ) == "object" &&
         typeof( tinyMCE.execCommand ) == "function" ) {
        tinyMCE.execCommand("mceAddControl", false, "tinymce");
    }
});
</script>
    <textarea id="tinymce" name="tinymce"></textarea>
EOT;
}

我不确定如何克服一些问题。 Tinymce编辑器将嵌套在Metabox内部,这可能不是理想的,并且它将无法在HTML和视觉编辑模式之间进行切换,以及正常帖子编辑器所具有的媒体插入命令。切换模式似乎定义为第一个参数是ID的函数,但是它似乎也编码为WP-Tinymce脚本。可以使用内置的Tinymce函数来做到这一点,但是这会改变完整的Tinymce和基本文本方面的文本方面,而无需任何WP HTML插入按钮。

其他提示

第一的: 非常感谢@Thomas McDonald 为了 他的回答;我需要弄清楚与 @Paul Sheldrake 问,托马斯的代码使我朝着正确的方向开始。

不幸的是我被卡住了,因为 我需要从默认值更改布局 对于更简单,更小的布局,因为我需要在侧代泊斯中使用Tinymce。我看了 几乎 无处不在的解决方案,尤其是在moxiecode上 Tinymce WikiTinymce提示和如何论坛 什么也没找到! 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:

Multiple TinyMCE TextAreas in the WordPress 3.0 Admin Editor
(资源: mikeschinkel.com)

因此,如果您正在使用 @Thomas McDonald 上面的代码您发现您有必要修改布局,请务必查看Hamilton Chua的真棒文章 (谢谢火腿!):

PS 如果您做的甚至有些错误的事情,Tinymce可能根本不会显示。例如,我使用 theme: "simple" 起初,我一无所获,我花了一个多小时才意识到我只需要使用 theme: "advanced". 。因此,如果您发现Tinymce不起作用,请务必尝试更改周围的事情,您可能会遇到类似的问题。 (顺便说一句,我没有尝试过任何其他主题,也没有探索其他可用的内容;如果您找到其他工作的主题,请在下面发表评论。)

脚注

1: 非常沮丧!在使用WordPress答案的一个多月之后,我希望找到所有问题的答案,就像这里的质量水平相同,在其他地方,我通常会感到失望!

由于我发现这篇文章是Google的第一个结果,因此我只是想评论WP现在提供了处理此类任务的功能。

add_meta_box 功能,添加以下代码 - >

wp_editor( $content, $editor_id, $settings = array() );

无论您要添加蒂米斯编辑器的位置

参考: wp_editor

默认编辑器Tinymce由WP-ADMIN/include/post.php中的函数加载,称为wp_tiny_mce(); 看源 在第1350行。在第1478行中有一系列设置。其中一个选项显然指定了TextArea选择器以将JavaScript编辑器应用于。我在读书 这篇文章Keighl 在他的博客上,我指向了它。阅读文章,也许有一种方法可以在管理员部分插件中调用WP_TINY_MCE()并将其应用于您创建的第二个文本区域。

我只是通过将“ theeditor”作为类属性添加到文本方面而得到的:

<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>
许可以下: CC-BY-SA归因
scroll top