基于安全角度的考虑,wordpress后台编辑器在发布文章时,会默认过滤掉部分html标签,比如script、onclick等。但很多时候,我们可能在发布文章时通过这些的html标签来实现特殊的需求,目前网上的文章基本都要修改wordpress内核文件,这样在wordpress版本升级时就会失效,而且也比较危险。本文就介绍一下通过主题文件来禁止wordpress后台编辑器默认过滤部分html标签的办法。
在wordpress主题functions.php文件中,添加下面的代码即可:
kses_remove_filters()
该函数的实现代码如下:
function kses_remove_filters() {
// Normal filtering.
remove_filter( 'title_save_pre', 'wp_filter_kses' );
// Comment filtering.
remove_filter( 'pre_comment_content', 'wp_filter_post_kses' );
remove_filter( 'pre_comment_content', 'wp_filter_kses' );
// Global Styles filtering.
remove_filter( 'content_save_pre', 'wp_filter_global_styles_post', 9 );
remove_filter( 'content_filtered_save_pre', 'wp_filter_global_styles_post', 9 );
// Post filtering.
remove_filter( 'content_save_pre', 'wp_filter_post_kses' );
remove_filter( 'excerpt_save_pre', 'wp_filter_post_kses' );
remove_filter( 'content_filtered_save_pre', 'wp_filter_post_kses' );
}
如果我们的主题不需要取消所有的过滤方法,那么也可以根据上面的代码选择要取消的过滤方法。比如我们在functions.php中单独调用下面的代码:
remove_filter( 'content_save_pre', 'wp_filter_post_kses' );