基于安全角度的考虑,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' );