标签中断自定义摘录功能

时间:2012-01-18 作者:cr0z3r

快速提问。我有一个函数,可以回显帖子类型的内容(如果没有可用的内容,则返回摘录)。看起来是这样的:

function era_excerpt($post, $length = 11, $ext = \' ..\') {
    if(is_int($post)) { $post = get_post($post); } elseif(!is_object($post)) { return false; }
    if(has_excerpt($post->ID)) { $the_excerpt = $post->post_excerpt; } else { $the_excerpt = $post->post_content; }
    $the_excerpt = strip_shortcodes(strip_tags(stripslashes($the_excerpt), \'<a><em><strong>\'));
    $the_excerpt = preg_split(\'/\\b/\', $the_excerpt, $length * 2+1);
    $excerpt_waste = array_pop($the_excerpt);
    $the_excerpt = implode($the_excerpt);
    $the_excerpt .= $ext;
    $post = $post->ID;

    return apply_filters(\'the_content\', $the_excerpt);
}
我意识到这个函数有一个主要问题:用户开始一个带有特殊HTML标记的帖子类型,例如<em>, <a> 和/或<strong>, 破坏了整个布局。假设这是由*strip\\u shortcodes*的“allowed tags”参数引起的,我将函数更改为:

function era_excerpt_new($post, $length = 11, $ext = \' ..\') {
    if(is_int($post)) { $post = get_post($post); } elseif(!is_object($post)) { return false; }
    if(has_excerpt($post->ID)) { $the_excerpt = $post->post_excerpt; } else { $the_excerpt = $post->post_content; }
    $the_excerpt = strip_shortcodes(stripslashes($the_excerpt));
    $the_excerpt = preg_split(\'/\\b/\', $the_excerpt, $length * 2+1);
    $excerpt_waste = array_pop($the_excerpt);
    $the_excerpt = implode($the_excerpt);
    $the_excerpt .= $ext;
    $post = $post->ID;

    return apply_filters(\'the_content\', $the_excerpt);
}
遗憾的是,这并没有阻止用户在开始使用帖子类型的内容(可能还有我不知道的其他标签)时破坏版面。

º 我之所以说开始,是因为到目前为止,在文本之间添加标记并没有破坏任何东西。

My question is, 我如何允许我的用户在发布帖子类型时使用他们想要的任何标记,并在不破坏我的网站的情况下回显其内容。

非常感谢。

1 个回复
最合适的回答,由SO网友:Pippin 整理而成

尝试删除stripslashes()函数。

结束

相关推荐

Add Post Tags to Body Class

想要将post标记名称添加到body类-我成功地使用下面的代码将类别添加到body类- //adds new body class for post category add_filter(\'body_class\', \'add_category_class_single\'); function add_category_class_single($classes){ global $post; $category = get_the_ca