zoukankan      html  css  js  c++  java
  • 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 格式,那么还是需要插件支持。

  • 相关阅读:
    二分练习题4 查找最接近的元素 题解
    二分练习题5 二分法求函数的零点 题解
    二分练习题3 查找小于x的最大元素 题解
    二分练习题2 查找大于等于x的最小元素 题解
    二分练习题1 查找元素 题解
    code forces 1176 D. Recover it!
    code forces 1173 B. Nauuo and Chess
    code forces 1173 C. Nauuo and Cards
    吴恩达深度学习课程笔记-15
    吴恩达深度学习课程笔记-14
  • 原文地址:https://www.cnblogs.com/surplus/p/15465141.html
Copyright © 2011-2022 走看看