如何在wordpress中的the_content()和the_excerpt()上设置字符限制?我只找到了字数限制的解决方案 - 我希望能够设置输出的确切数量字符。
答案 0 :(得分:27)
您可以使用Wordpress过滤器回调函数。在主题目录中,创建一个名为functions.php
的文件,并在以下位置添加以下内容:
<?php
add_filter("the_content", "plugin_myContentFilter");
function plugin_myContentFilter($content)
{
// Take the existing content and return a subset of it
return substr($content, 0, 300);
}
?>
每次通过plugin_myContentFilter()
请求帖子/页面的内容时,都会调用the_content()
函数 - 它会为您提供内容作为输入,并将使用您从函数返回的任何内容用于后续输出或其他过滤功能。
您也可以对the_exercpt()
- add_filter()
执行相同的操作,然后使用一个函数作为回调。
有关详细信息,请参阅Wordpress filter reference docs。
答案 1 :(得分:25)
甚至更简单,无需创建过滤器:使用PHP的mb_strimwidth
将字符串截断为特定宽度(长度)。只需确保使用get_
语法之一。
例如,内容:
<?php $content = get_the_content(); echo mb_strimwidth($content, 0, 400, '...');?>
这会将字符串剪切为400个字符,然后用...
将其关闭。
只需使用get_permalink()
指向永久链接,即可在末尾添加“阅读更多”链接。
<a href="<?php the_permalink() ?>">Read more </a>
当然你也可以在第一行建立read more
。而不仅仅用'...'
'<a href="' . get_permalink() . '">[Read more]</a>'
答案 2 :(得分:16)
这也可以平衡HTML标记,这样它们就不会被打开,也不会破坏文字。
add_filter("the_content", "break_text");
function break_text($text){
$length = 500;
if(strlen($text)<$length+10) return $text;//don't cut if too short
$break_pos = strpos($text, ' ', $length);//find next space after desired length
$visible = substr($text, 0, $break_pos);
return balanceTags($visible) . " […]";
}
答案 3 :(得分:8)
答案 4 :(得分:3)
使用the_content()
功能(用于显示页面的主要内容)
$content = get_the_content();
echo substr($content, 0, 100);
使用the_excerpt()
功能(用于显示页面的摘录内容)
$excerpt= get_the_excerpt();
echo substr($excerpt, 0, 100);
答案 5 :(得分:2)
将<?php the_content();?>
替换为以下代码
<?php
$char_limit = 100; //character limit
$content = $post->post_content; //contents saved in a variable
echo substr(strip_tags($content), 0, $char_limit);
?>
答案 6 :(得分:0)
只是为了帮助,如果有人想限制帖子长度为home page
..那么可以使用下面的代码来做到这一点..
以下代码只是对@bfred.it
Sir
add_filter("the_content", "break_text");
function limit_text($text){
if(is_front_page())
{
$length = 250;
if(strlen($text)<$length+10) return $text; //don't cut if too short
$break_pos = strpos($text, ' ', $length); //find next space after desired length
$visible = substr($text, 0, $break_pos);
return balanceTags($visible) . "... <a href='".get_permalink()."'>read more</a>";
}else{
return $text;
}
}
答案 7 :(得分:0)
<?php
echo apply_filters( 'woocommerce_short_description', substr($post->post_excerpt, 0, 500) )
?>
答案 8 :(得分:0)
wp_trim_words()
此功能将文本修剪为一定数量的单词,并返回修剪后的文本。
$excerpt = wp_trim_words( get_the_content(), 40, '<a href="'.get_the_permalink().'">More Link</a>');
使用mb_strimwidth()
php函数获取具有指定宽度的截断字符串。
$excerpt = mb_strimwidth( strip_tags(get_the_content()), 0, 100, '...' );
在add_filter()
过滤器挂钩上使用WordPress的the_content
方法。
add_filter( "the_content", "limit_content_chr" );
function limit_content_chr( $content ){
if ( 'post' == get_post_type() ) {
return mb_strimwidth( strip_tags($content), 0, 100, '...' );
} else {
return $content;
}
}
使用自定义php函数限制内容字符。
function limit_content_chr( $content, $limit=100 ) {
return mb_strimwidth( strip_tags($content), 0, $limit, '...' );
}
// using above function in template tags
echo limit_content_chr( get_the_content(), 50 );
答案 9 :(得分:0)
我知道这篇文章有点旧,但我想我会添加我使用的函数,这些函数会考虑到您想要安全排除的任何过滤器和任何 <![CDATA[some stuff]]>
内容。
只需添加到您的functions.php文件并在您想要的任何地方使用,例如:
content(53);
或
excerpt(27);
享受吧!
//limit excerpt
function excerpt($limit) {
$excerpt = explode(' ', get_the_excerpt(), $limit);
if (count($excerpt)>=$limit) {
array_pop($excerpt);
$excerpt = implode(" ",$excerpt).'...';
} else {
$excerpt = implode(" ",$excerpt);
}
$excerpt = preg_replace('`\[[^\]]*\]`','',$excerpt);
return $excerpt;
}
//limit content
function content($limit) {
$content = explode(' ', get_the_content(), $limit);
if (count($content)>=$limit) {
array_pop($content);
$content = implode(" ",$content).'...';
} else {
$content = implode(" ",$content);
}
$content = preg_replace('/\[.+\]/','', $content);
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
return $content;
}