• WordPress the_excerpt()截取摘要长度


    WordPress Modify The Excerpt Lenth

    wordpress-modify-the-excerpt-lenth

    用法:

    the_excerpt()
    输出当前文章的摘要,并会附上”[…]”,这不是”更多”的链接。如果你没提供一篇文章明确的摘要(后台文章编辑器的可选摘要区域),它将自动摘录文章内容中前55个字作为摘要。而HTML标签和图片都会从摘要内容中去除。此标签必须用在主循环里。
    用法:<?php the_excerpt(); ?>
    示例:
    使用条件判断语句判断在分类页或者存档页显示摘要,其他页显示内容
    <?php if ( is_category() || is_archive() ) {
    the_excerpt();
    } else {
    the_content(); }
    ?>
    get_the_excerpt()
    返回文章摘要赋值给变量。此标签必须在主循环里。如果你仅希望输出文章摘要,你可以直接使用the_excerpt(). 用法:<?php
    $excerpt = get_the_excerpt($deprecated) ?>
    参数:$deprecated 没有要求
    返回的值:
    1、如果文章没有摘要,它将返回一个空字符串,并随后加上”[…]”。
    2、对于密码保护的网页,它将返回一个字符串,默认值是”没有摘要,因为这是一个受保护的文章。”,通过函数定义可以改变文字。
    3、如果文章有摘要并且没有密码保护的话,就会返回摘要作为一个字符串。
    示例:
    get_the_excerpt()
    用于检索和存储值在一个变量,没有输出到页面。
    eg1:
    <?php
    $myExcerpt = get_the_excerpt();
    if ($myExcerpt != ”) {
    …..
    }
    echo $myExcerpt;
    ?>
    eg2:
    the_excerpt_max_charlength(140);
    function the_excerpt_max_charlength($charlength) {
       $excerpt =
    get_the_excerpt();//获取摘要
    $charlength++;
    if(strlen($excerpt)>$charlength)
    {//如果摘要长度大于指定长度,就需要截取
    $subex = substr($excerpt,0,$charlength-5);//截取减去[…]的长度
    $exwords = explode(” “,$subex);//将字符串分割成数组
    $excut = -(strlen($exwords[count($exwords)-1]));//截取最后一个字符
    if($excut<0) {echo substr($subex,0,$excut);} else {echo $subex;
    }
    echo “[…]”;
    } else {
    //如果取得的字符串长度小于指定长度,则直接输出
    echo
    $excerpt;
    }
    }
    源文件:get_the_excerpt()和the_excerpt() 都在
    wp-includes/post-template.php文件.

    ———————————————————-

    解决方案:

    今天帮朋友修改wordpress主题,提出了一个需求,想要把首页文章默认输出的摘要长度增长一些,研究了好一会儿才最终研究出结果:首页的文章是用the_excerpt()函数直接输出post的摘要内容的,最恶心的是这个函数没有入参,the_excerpt()的输出长度是确定的55字符。

    The_excerpt()在英文中,默认是截取55个英文单词的,但是在中文中却是无法截取到55个汉字。原因是因为在wordpress的the_excerpt()函数中用到了

    $text = implode(‘ ‘, $words);

    经过研究,有三种方案在wordpress中修改默认摘要函数the_excerpt()的输出长度,分别给大家分享下。

    方法一:修改wordpress文件,直接把函数的输出长度改为需要的长度。

    优点: 修改简单完全控制,但是缺点也很明显,侵入了wordpress的文件,一旦博客升级这个方法就会失效,如有多个域名就会一起生效。

    这个方法改起来很简单,找到wp-includes下的formatting.php文件,查找function wp_trim_excerpt($text)函数,找到excerpt_length,把相对应的55修改成自己喜欢的数值即可。

    方法二:自定义一个函数替代the_excerpt()

    优点:独立主题控制,缺陷:只能控制少于55个字符!!!大于55个字符,依然输出55个字符

    在主题的functions.php,写入如下的代码

    function chinese_excerpt($text, $lenth=100) {
    $text = mb_substr($text,0, $lenth);
    return $text;
    }
    add_filter('the_excerpt', 'chinese_excerpt');

    可以根据你的需要把$lenth改成你需要的长度即可。这个方法只是用自己写的函数替换掉了the_excerpt(),优点很明显,完全不侵入wordpress的文件,只要你使用这个主题就可以了。

    方法三:自定义一个函数替代excerpt_length()

    优点: 独立主题,不影响Wordpress内部文件,可以控制任意字符,包括大于55个字符,超级简单的!

    这个就方便了,终于不用专门对中文的摘录进行处理了。有些朋友可能会说:那如何控制截取文字个数?很简单,很多主题都有这类自定义方法:

    把下面的内容放到你的主题 functions.php 里面

    //custom_excerpt_length
    function custom_excerpt_length( $length ){
    return 200;
    }
    add_filter( 'excerpt_length', 'custom_excerpt_length');

    说明:里面的 200 就是文字个数,根据自己需要设置。
    以后要摘录输出就直接用 the_excerpt() 函数输出,当然,摘录中你要保留文章的 HTML 格式,那么还是需要插件支持。

  • 相关阅读:
    Jquery消息提示插件toastr使用详解
    spingboot jar 包启动遇到得坑
    freemarker使用shiro标签(spring boot)
    sping boot 集成shiro
    java 线程安全(初级)
    java GC jvm 内存分布 和新生代,老年代,永久代,(详细)
    java的新生代 老年代 永久代
    windows下rabbitmq(架构师必备神器)集群搭建
    友盟移动开发平台.NET版本SDK
    jstree无限级菜单ajax按需动态加载子节点
  • 原文地址:https://www.cnblogs.com/surplus/p/15465141.html
Copyright © 2020-2023  润新知