快速提问。我有一个函数,可以回显帖子类型的内容(如果没有可用的内容,则返回摘录)。看起来是这样的:
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, 我如何允许我的用户在发布帖子类型时使用他们想要的任何标记,并在不破坏我的网站的情况下回显其内容。
非常感谢。