手动摘录上的Wordpress html标记条
我试着制作链接,br和斜体标记在手动摘录上有效,但运气不好,摘录没有中断。我曾尝试过许多不同的代码,如中建议的,但什么都没有,现在我有了以下代码:手动摘录上的Wordpress html标记条,html,wordpress,strip,Html,Wordpress,Strip,我试着制作链接,br和斜体标记在手动摘录上有效,但运气不好,摘录没有中断。我曾尝试过许多不同的代码,如中建议的,但什么都没有,现在我有了以下代码: function wp_trim_all_excerpt($text) { global $post; $raw_excerpt = $text; //Add the allowed HTML tags separated by a comma $excerpt_length = apply_filters('excerpt_length',
function wp_trim_all_excerpt($text) {
global $post;
$raw_excerpt = $text;
//Add the allowed HTML tags separated by a comma
$excerpt_length = apply_filters('excerpt_length', 150000);
$text = wp_trim_words( $text, $excerpt_length ); //since wp3.3
$allowed_tags = '<p>,<a>,<em>,<strong>,<i>,<br>';
$text = strip_tags($text, $allowed_tags);
return apply_filters('wp_trim_excerpt', $text, $raw_excerpt); //since wp3.3
}
remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'wp_trim_all_excerpt');
函数wp\u trim\u all\u摘录($text){
全球$员额;
$raw_摘录=$text;
//添加允许的用逗号分隔的HTML标记
$extract_length=应用过滤器('extract_length',150000);
$text=wp_trim_words($text$extract_length);//自wp3.3以来
$allowed_tags=',,
;
$text=strip_标记($text$allowed_标记);
返回apply_filters('wp_trim_extract',$text,$raw_extract);//自wp3.3以来
}
移除过滤器(“获取摘录”、“wp修剪摘录”);
添加过滤器(“获取摘录”、“修改所有摘录”);
但是$allowed_标签并没有保存任何东西,我想因为我有wp_装饰,但我已经玩了几个小时了,什么都没有,我也尝试了高级摘录插件,我在页面中激活了摘录,但是,不知道为什么,html可以工作
有什么想法吗?上面的解决方案仍然有一个限制,因为有些HTML标记成对出现。如果摘录包含开始标记,但不包含相应的结束标记,则网页的其余部分可能格式不正确 此代码检查摘录中的此类标记,并根据需要添加结束标记:
<?php
/******************************************************************************
* @Author: Richard Chonak
* @Date: August 6, 2013
* @Description: Ensures closure of HTML tags opened in an automatically generated excerpt.
* Also trims off any trailing incomplete HTML tag at the end of the excerpt.
* @Tested: Up to WordPress version 3.6
*
* @Author: Boutros AbiChedid
* @Date: June 20, 2011
* @Websites: http://bacsoftwareconsulting.com/ ; http://blueoliveonline.com/
* @Description: Preserves HTML formating to the automatically generated Excerpt.
* Also Code modifies the default excerpt_length and excerpt_more filters.
* @Tested: Up to WordPress version 3.1.3
*******************************************************************************/
function custom_wp_trim_excerpt($text) {
$raw_excerpt = $text;
if ( '' == $text ) {
//Retrieve the post content.
$text = get_the_content('');
//Delete all shortcode tags from the content.
$text = strip_shortcodes( $text );
$text = apply_filters('the_content', $text);
$text = str_replace(']]>', ']]>', $text);
$allowed_tags = '<img>,<small>,<strong>,<em>,<b>,<i>,<p>,<br>,<a>,<blockquote>,<ul>,<li>'; /*** MODIFY THIS. Add the allowed HTML tags separated by a comma.***/
$twopart_tags = '<small>,<strong>,<em>,<b>,<i>,<p>,<br>,<a>,<blockquote>,<ul>,<li>'; /*** MODIFY THIS. Add the twopart HTML tags separated by a comma.***/
/* turn tag list into one big search pattern */
$search_patterns = "/" . str_replace(",","|",str_replace(">", "[^>]*>",$twopart_tags)) . '/';
$text = strip_tags($text, $allowed_tags);
$excerpt_word_count = 200; /*** MODIFY THIS. change the excerpt word count to any integer you like.***/
$excerpt_length = apply_filters('excerpt_length', $excerpt_word_count);
$excerpt_end = '[...]'; /*** MODIFY THIS. change the excerpt endind to something else.***/
$excerpt_more = apply_filters('excerpt_more', ' ' . $excerpt_end);
$words = preg_split("/[\n\r\t ]+/", $text, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY);
if ( count($words) > $excerpt_length ) {
array_pop($words);
$text = implode(' ', $words);
$text = $text . $excerpt_more;
} else {
$text = implode(' ', $words);
};
/* if fragment ends in open tag, trim off */
preg_replace ("/<[^>]*$/", "", $text);
/* search for tags in excerpt */
preg_match_all ($search_patterns, $text, $matches);
/* if any tags found, check for matching pairs */
$tagstack = array ("");
$tagsfound = $matches[0];
while ( count ($tagsfound) > 0) {
$tagmatch = array_shift($tagsfound);
/* if it's a closing tag, hooray; but if it's not, then look for the closer */
if ( !strpos($tagmatch,"</") && !strpos ($tagmatch,"/>") ) {
preg_match("/\pL+/",$tagmatch, $tagwords);
$endtag = "</" . $tagwords[0] . ">";
/* if this tag was not closed, put the closing tag on the stack */
if (!in_array($endtag, $tagsfound) ) {
array_push($tagstack,$endtag);
};
};
};
/* if any unbalanced tags were found, add the closing tags */
while (count ($tagstack) > 1) {
$text = $text . array_pop($tagstack);
}
}
return apply_filters('wp_trim_excerpt', $text, $raw_excerpt);
}
remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'custom_wp_trim_excerpt');
?>