function update( $new_instance, $old_instance ) {
if( current_user_can( \'unfiltered_html\' ) ) {
$new_instance[\'title\'] = strip_tags( $new_instance[\'title\'], \'<small><span><b><br><a><strong>\' );
$new_instance[\'more_text\'] = strip_tags( $new_instance[\'more_text\'], \'<div><span><strong><b>\' );
} else {
$new_instance[\'title\'] = strip_tags( $new_instance[\'title\'] );
$new_instance[\'more_text\'] = strip_tags( $new_instance[\'more_text\'] );
}
[...]
我肯定是管理员,我检查过我可以不过滤html。但是,当我在我的小部件中这样做时,就像在tut中看到的那样,它不起作用。Wordpress将其输出为htmlspecialchars。
有过滤器吗?希望它不是一个全局过滤器,我只是不想在一些小部件中使用它。
那么,当wordpress通过过滤器运行wigets时,wigets的消毒目的是什么呢?
考虑到这一点后,我将在全球范围内这样做,我让wp做它的事情,然后我只转换回我需要的东西。也许一个更好的解决方案是删除默认的esc\\u html过滤器,并用wp\\u kses替换它,只允许使用一些标记。这样,您仍然可以看到输入的所有内容,而没有任何内容被删除。嗯,至少不是在那个水平上。小部件本身可能会剥离它,也可能不会。
/** allow <small> tags inside widget titles */
add_filter( \'widget_title\', function($title) {
$title = str_replace(\'<small>\', \'<small>\', $title);
$title = str_replace(\'</small>\', \'</small>\', $title);
return $title;
} );
小部件现在可以允许标记甚至所有内容,wordpress会将所有内容转换为HTMLCharacter。因此,只有最终才会成为真正的html。