-1

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

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

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

简单来说,我基本上希望它看起来像一个简单的 HTML textarea,并去除所有 HTML 标记(就像 PHP 函数strip_tags所做的那样。虽然,我无法让这个 PHP 功能与简单的 textarea 一起工作......不知道为什么,只是我的主题的编码问题。

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

4

3 回答 3

1

我认为您可以使用array_map像这样剥离您保存在数据库中的数组的所有元素的标签..

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

于 2013-11-04T05:33:34.527 回答
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!"

于 2013-11-04T04:13:18.993 回答
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;
}
于 2013-11-04T07:27:26.190 回答