如何在wordpress中对the_content()和the_excerpt()设置字符限制

更新于 2021年12月26日 wordpress教程

如何在 wordpress 中对 the_content() 和 the_excerpt() 设置字符限制? 我只找到了字数限制的解决方案 – 我希望能够设置输出的确切字符数。

如何在wordpress中对the_content()和the_excerpt()设置字符限制

解决方案

您可以使用 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_content()的内容时都会调用该函数。 它为您提供内容作为输入,并将使用您从该函数返回的任何内容用于后续输出或其他过滤器函数。

您还可以将add_filter()用于其他函数,例如the_excerpt()以在请求摘录时提供回调函数。

有关更多详细信息,请参阅WordPress 过滤器参考文档

或者更简单,无需创建过滤器:使用 PHP 的mb_strimwidth将字符串截断为特定宽度(长度)。 只要确保您使用get_语法之一。 例如内容:

<?php $content = get_the_content(); echo mb_strimwidth($content, 0, 400, '...');?>

这会将字符串剪切为 400 个字符并用...关闭它。 只需通过使用get_permalink()指向永久链接,在末尾添加“阅读更多”链接。

<a href="https://stackoverflow.com/questions/3147898/how-to-set-character-limit-on-the-content-and-the-excerpt-in-wordpress/<?php the_permalink() ?>">Read more </a>

当然,您也可以在第一行中构建read more 。 不仅仅是将'...'替换为'<a href="' . get_permalink() . '">[Read more]</a>'

这也平衡了 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) . " […]";
} 

wp_trim_words此函数将文本修剪为一定数量的单词并返回修剪后的文本。

例子:-

echo wp_trim_words( get_the_content(), 40, '...' );

用于使用the_content()函数(用于显示页面的主要内容)

$content = get_the_content();

echo substr($content, 0, 100);

用于使用the_excerpt()函数(用于显示页面的摘录短内容)

$excerpt= get_the_excerpt();

echo substr($excerpt, 0, 100);

用下面的代码替换<?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);
?>

php substr() 函数引用

php strip_tags() 函数参考

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, '...' );

the_content过滤器钩子上使用 WordPress 的add_filter()方法。

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 );

只是为了帮助,如果有人想限制home page帖子长度..然后可以使用下面的代码来做到这一点..

下面的代码只是对@bfred.it先生的修改

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;
  }

}
<?php 
echo apply_filters( 'woocommerce_short_description', substr($post->post_excerpt, 0, 500) ) 
?>

我知道这篇文章有点旧,但我想我会添加我使用的函数,这些函数考虑到任何过滤器和任何你想要安全排除的<![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(']]>', ']]&gt;', $content);
  return $content;
}

你可能还喜欢下面这些文章

怎么让WordPress不显示文章摘要怎么让WordPress不显示文章摘要

wordpress后台不显示摘要

function new_excerpt_more($more) {

a href=””. get_permalink($post->

wordpress如何在一个页面显示所有文章wordpress如何在一个页面显示所有文章

让WordPress一个页面显示全部分类的文章

cat=’ . $cat->
php echo $cat->
a href=”<
$cats = get_categories(array(‘include’ =>

如何使用WordPress内置图片仓库制作缩略图如何使用WordPress内置图片仓库制作缩略图

如何使用WordPress内置图片仓库制作缩略图?
php _fcksavedurl=””<
php” _fcksavedurl=””<
” alt=”<

wordpress如何自定义短代码wordpress如何自定义短代码

wordpress实现自定义短代码。
// @param $content 短代码里面的内容

// @param $code 短代码

function hello($atts, $content=null, $code=””) {

由于解码不当,Wordpress 搜索特殊字符失败由于解码不当,Wordpress 搜索特殊字符失败

我正在实施 WordPress 搜索功能。
if ($query->
if ($search_length <
$query->

wordpress智能自动摘要插件:wpaewordpress智能自动摘要插件:wpae

目前wordpress的摘要大多数由主题提供。
一直以来没有一款插件可以智能提取正文的关键内容作为摘要,于是自己动手做了一个,命名为wpae(wordpress auto excerpt)。

wordpress自定义url路由于自定义载入模板wordpress自定义url路由于自定义载入模板

wordpress强大的hook能够让我们去自定义路由,在使用框架的时候一般路由是写在一个配置文件中,wordpress作为一个cms系统,自然是不能这么干,实际上,wordpress路由规则是写在数据库中,自定义路由其实就是修改这个数据库的值。
默认这个tpl_page查询是不会加入到$GLOBALS[‘wp_query’]中的query_var变量中,默认wordpress的public_query_vars有这么一些

如何使用XPath采集网页如何使用XPath采集网页

使用XPath采集网页中的内容是一件十分简单的事情,这里介绍两种xpath的写法——使用id提取网页中的内容和使用class提取网页中的内容。
如果你看过网页源代码,那么就会发现,网页中内容一般由带有id或者class的div包围,而XPath就可以将这些被div包围着的内容全部匹配出来。

好看 (0) 很好看 (0) 非常好看 (0)
赞赏

微信赞赏支付宝赞赏