停止TinyMCE在WordPress中删除空标签 - 是的,我已经研究过了

时间:2016-04-20 07:14:40

标签: php wordpress tinymce

像许多其他人一样,我对TinyMCE剥离HTML标签有疑问 - 特别是我用Font Awesome使用的空标签。

我研究并尝试过解决方案,但没有任何效果。我对PHP并不是特别强大,但我遇到的问题是:每个人都想修改tinymce.js文件中的tinyMCE.init函数。然而,在WP的最新版本中,我没有。我有class-wp-editor.php,其中包含:

            /*
         * For people who really REALLY know what they're doing with TinyMCE
         * You can modify $mceInit to add, remove, change elements of the config
         * before tinyMCE.init. Setting "valid_elements", "invalid_elements"
         * and "extended_valid_elements" can be done through this filter. Best
         * is to use the default cleanup by not specifying valid_elements,
         * as TinyMCE checks against the full set of HTML 5.0 elements and attributes.
         */
        if ( $set['teeny'] ) {

            /**
             * Filter the teenyMCE config before init.
             *
             * @since 2.7.0
             *
             * @param array  $mceInit   An array with teenyMCE config.
             * @param string $editor_id Unique editor identifier, e.g. 'content'.
             */
            $mceInit = apply_filters( 'teeny_mce_before_init', $mceInit, $editor_id );
        } else {

            /**
             * Filter the TinyMCE config before init.
             *
             * @since 2.5.0
             *
             * @param array  $mceInit   An array with TinyMCE config.
             * @param string $editor_id Unique editor identifier, e.g. 'content'.
             */
            $mceInit = apply_filters( 'tiny_mce_before_init', $mceInit, $editor_id );
        }

现在我知道我必须对valid_elements,extended_valid_elements或verify_html做些什么,但我不知道该怎么做。我可以从评论中看到它的位置,但我不知道使用哪种语法或正确的语法。

我找到了这个小提琴:http://fiddle.tinymce.com/j9baab/1但就像我说的那样我在WP的任何地方都没有这个功能。

请帮忙!

1 个答案:

答案 0 :(得分:0)

您真的不想修改class-wp-editor.php文件,因为每次更新WordPress时它都会被覆盖。

扩展/修改TinyMCE设置的最简单方法是构建一个简单的WordPress插件,并绑定到WordPress提供的钩子以更改编辑器的设置。

解决您想要查看的init添加选项的特殊需求 'tiny_mce_before_init'钩子。您可以在插件中执行以下操作:

add_filter('tiny_mce_before_init', 'add_my_options');

function add_my_options($opt) {   
    // $opt is the existing array of options for TinyMCE 
    // We simply add a new array element where the name is the name
    // of the TinyMCE configuration setting.  The value of the array
    // object is the value to be used in the TinyMCE config.

    $opt['extended_valid_elements'] = '*[*]';
    return $opt;
}

编写一个简单的WP插件并不太难 - 网上有很多例子。对于这个简单的东西,它实际上只是一个PHP文件。一旦你构建了插件,你就可以安装并激活它。激活后,每次调用TinyMCE并将选项注入init代码时,都会运行代码。

编辑:以下是OPs评论中的代码(比评论的格式更容易阅读):

<?php
/**
 * Plugin Name: Disable TinyMCE Filters
 * Plugin URI: http://mindspyder.com
 * Description: This plugin disables annoying TinyMCE Filters.
 * Version: 1.0.0
 * Author: Brandon Snow
 * Author URI: http://mindspyder.com
 * License: GPL2
 */
 add_filter('tiny_mce_before_init', 'add_my_options');

function add_my_options($opt) {   
    // $opt is the existing array of options for TinyMCE 
    // We simply add a new array element where the name is the name
    // of the TinyMCE configuration setting.  The value of the array
    // object is the value to be used in the TinyMCE config.

    $opt['extended_valid_elements'] = '*[*]';
    return $opt;
}
?>