WordPress 3.2已经破解了我的TinyMCE代码

时间:2011-07-11 作者:turbonerd

我的代码一直工作到3.2更新,我注意到tinyMCE也被更新了。

有人知道为什么现在这可能行不通吗?我没有得到任何控制台错误,但我也没有在页面上得到任何tinyMCE编辑器!

CLARIFICATION: every instance of the TinyMCE editor has disappeared!

FURTHER CLARIFICATION: this is only occurring on my custom post type pages where I have custom instances of the TinyMCE editor. I still have the default "theEditor" MCE on the default Posts area.

function meta_genus_species() {
    global $post;

    $genus = get_post_custom_values( \'genus\', $post->ID );
    $species = get_post_custom_values( \'species\', $post->ID );
    $etymology = get_post_custom_values( \'etymology\', $post->ID );
    $family = get_post_custom_values( \'family\', $post->ID );
    $common_names = get_post_custom_values( \'common_names\', $post->ID );

    if (!isset($id)) { $id = "etymology"; }
    if (!isset($temp_min)) { $temp_min = plugins_url(\'images/temp_max.png\' , __FILE__); }
    if (!isset($temp_max)) { $temp_max = plugins_url(\'images/temp_min.png\' , __FILE__); }
    if (!isset($pH_min)) { $pH_min = plugins_url(\'images/pH_max.png\' , __FILE__); }
    if (!isset($pH_max)) { $pH_max = plugins_url(\'images/pH_max.png\' , __FILE__); }

$tinyMCE = <<<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:"75",
                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,|,temp_min,temp_max,pH_min,pH_max",
                theme_advanced_buttons2 : "",
                theme_advanced_buttons3 : "",
                setup : function(ed) {
                    ed.addButton(\'temp_min\', {
                        title : \'Temperature: Minimum\',
                        image : \'{$temp_min}\',
                        onclick : function() {
                            ed.focus();
                            ed.selection.setContent(\'[temp_min]\');
                        }
                    }),
                    ed.addShortcut("ctrl+1", "temp_min", "temp_min"),
                    ed.addButton(\'temp_max\', {
                        title : \'Temperature: Maximum\',
                        image : \'{$temp_max}\',
                        onclick : function() {
                            ed.focus();
                            ed.selection.setContent(\'[temp_max]\');
                        }
                    }),
                    ed.addButton(\'pH_min\', {
                        title : \'pH: Minimum\',
                        image : \'{$pH_min}\',
                        onclick : function() {
                            ed.focus();
                            ed.selection.setContent(\'[pH_min]\');
                        }
                    }),
                    ed.addButton(\'pH_max\', {
                        title : \'pH: Maximum\',
                        image : \'{$pH_max}\',
                        onclick : function() {
                            ed.focus();
                            ed.selection.setContent(\'[pH_max]\');
                        }
                    });
                }
              };
              tinyMCE.execCommand("mceAddControl", true, "{$id}");
            }
        });
    </script>
EOT;
    echo $tinyMCE;

    ?>
<div class="meta_control normal">
    <p>Description of taxonomy.</p>
    <div class="box">
        <label>Genus</label>
        <p>
            <input name="genus" class="text" value="<?php if(isset($genus[0])) { echo esc_attr( $genus[0] ); } ?>" />
            <span>Testing...</span>
        </p>
    </div>
    <div class="box">
        <label>Species</label>
        <p>
            <input name="species" class="text"  value="<?php if(isset($species[0])) { echo esc_attr( $species[0] ); } ?>" />
            <span>Testing...</span>
        </p>
    </div>
    <p>
        <label>Etymology</label>
        <textarea cols="50" rows="5" name="etymology" id="etymology"><?php if(isset($etymology[0])) { echo esc_attr( $etymology[0] ); } ?></textarea>
        <span>Description</span>
    </p>
    <p>
        <label>Family</label>
        <input name="family" class="text"  value="<?php if(isset($family[0])) { echo esc_attr( $family[0] ); } ?>" />
        <span>Description</span>
    </p>
    <p>
        <label>Common Names</label>
        <input name="common_names" class="text"  value="<?php if(isset($common_names[0])) { echo esc_attr( $common_names[0] ); } ?>" />
        <span>Description</span>
    </p>
</div>
    <?php

}

function meta_authored() {
    global $post;

    $species_author = get_post_custom_values( \'species_author\', $post->ID );
    $year_described = get_post_custom_values( \'year_described\', $post->ID );

    ?>
<div class="meta_control side">
    <label>Species Author</label>
    <p>
        <input name="species_author" class="text" value="<?php if(isset($species_author[0])) { echo esc_attr( $species_author[0] ); } ?>" />
    </p>
    <label>Year Described</label>
    <p>
        <input name="year_described" class="text" value="<?php if(isset($year_described[0])) { echo esc_attr( $year_described[0] ); } ?>" />
    </p>
</div>
    <?php
}

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

我发现some info on changes in 3.2 这可能是相关的:

现在,wp_tiny_mce_preload_dialogs() WP3中不再存在。2开。它被替换为wp_preload_dialogs() 现在从wp_quicktags(). wp_quicktags, 轮到他了the_editor() 作用因此,如果您使用the_editor() 您不再需要手动调用该函数来预加载任何对话框!

如果您不使用the_editor(), 一定要打电话wp_preload_dialogs() 以以下方式从页脚的某个位置:

wp_preload_dialogs( array( \'plugins\' => \'wpdialogs,wplink,wpfullscreen\' ) );

您可以尝试调用wp\\u preload\\u dialogs(),或者切换到使用the_editor() 而不是tinyMCE.execCommand().

还有,看看this question; 使命感wp_tiny_mce() 解决了我的问题。

<小时/>Update: wp_tiny_mce() might be deprecated in 3.3.

SO网友:kaiser

你的自定义TinyMCE代码破坏你的主题的可能性很小,但请在尝试更改或调试它之前先停用你的插件,如果没有帮助,请切换到默认主题,看看它是否有效。

然后看看你的meta_genus_species() 函数并开始注释ed.addButton 代码块。看看它是否有效。如果有,请取消注释一个,检查结果,取消注释下一个,等等。

SO网友:danielwiener

WP 3.2和可视化编辑器存在问题

尝试以下操作:

无论如何,对我们来说,我们的解决方案是打开wp admin/admin页脚。php和注释输出第36行

do_action(\'admin_footer\', \'\');
阅读以下内容:http://documentation.diyartportfolios.com/visual-editor-not-workin

还有这个:http://wordpress.org/support/topic/upgraded-to-32-visual-editor-buttons-missing

结束

相关推荐

如何在TinyMCE中插入链接图像

WordPress附带的TinyMCE编辑器中没有用于从链接插入图像的按钮。我知道您可以使用上载/插入部分来完成此操作。但我们可以说,我不想让用户上传图像,但希望他们能够通过链接插入图像。如果删除上载功能,上载/插入部分将完全消失在WordPress上已经有这样做的方法了吗?