如何让Wordpress编辑器不接受HTML?

时间:2013-11-04 04:06:48

标签: php wordpress

所以基本上,我在我的网站上使用Wordpress编辑器,我不希望我的用户在其中发布任何HTML,因为它可能会导致一些问题。

我的Wordpress编辑器目前是这样的:

<?php wp_editor( get_the_content() , 'post_content'); ?>

简单来说,我基本上希望它看起来像一个简单的HTML textarea,并删除所有HTML标记(就像PHP函数strip_tags所做的那样。虽然,我无法得到这个PHP使用简单的textarea的功能...不确定为什么,只是我的主题的编码问题。

是的,这样的事情可能吗?

3 个答案:

答案 0 :(得分:1)

由于get_the_content()会返回输入内容的字符串,因此它只是您未经过滤的用户输入,例如:"This is an <em>unfiltered</em> string with <strong>potential HTML included!</strong>"

如果您正在初始化编辑器,是否可以在初始化期间简单地在所述输入上调用strip_tags

<?php wp_editor( strip_tags(get_the_content()), 'post_content'); ?>

最终文本将与strip_tags "This is an unfiltered string with potential HTML included!"一样:{{1}}

答案 1 :(得分:1)

我认为您可以使用array_map来删除您在数据库中保存的所有数组元素的标记。

$save_to_db = array_map('strip_tags', $save_to_db);

答案 2 :(得分:0)

最简单的方法是挂钩在更新数据库中的帖子之前运行的过滤器。然后,您可以剥离标签或与帖子的内容和其他属性进行任何其他交互。

以下是在保存帖子之前删除所有标签的示例代码:

function my_remove_content_html( $data ){
    $data['post_content'] = strip_tags( $data['post_content'] );

    return $data;
}

您可以为管理员启用HTML代码,例如:

function my_remove_content_html( $data ){
    if ( ! is_super_admin() ) {
        $data['post_content'] = strip_tags( $data['post_content'] );
    }

    return $data;
}

您还可以将标签的剥离限制为特定的帖子类型,如下所示:

function my_remove_content_html( $data ){
    if ( 'post' == $data['post_type'] ) {
        $data['post_content'] = strip_tags( $data['post_content'] );
    }

    return $data;
}