自定义帖子类型更改摘录更多和摘录长度

时间:2014-05-22 作者:John Hack

我写了一些代码来定制excerpt_lengthexcerpt_more. 摘录长度适用于自定义帖子类型和普通帖子。但我不知道为什么excerpt_more 不适用于自定义帖子类型。下面是我的代码。

class Excerpt {

  // Default length (by WordPress)
  public static $length = 55;

  // So you can call: doctoplus_excerpt(\'short\');
  public static $types = array(
      \'ten\'=>10,
      \'few\' => 15,
      \'short\' => 25,
      \'regular\' => 55,
      \'long\' => 100
    );
  //Default more
  public static $more = \'...\';

  //So you can call doctoplus_excerpt(\'short\',\'Read More\');
  public static $moreTypes = array(
    1 => \'Read More\',
    2 => \'More\',
    3 => \'View more\'
  );
  /**
   * Sets the length for the excerpt,
   * then it adds the WP filter
   * And automatically calls the_excerpt();
   *
   * @param string $new_length 
   * @return void
   * @author Girija
   */
  public static function length($new_length = 55) {
    Excerpt::$length = $new_length;

    add_filter(\'excerpt_length\', \'Excerpt::new_length\', 999);

    Excerpt::output();
  }

  // Tells WP the new length
  public static function new_length() {
    if( isset(Excerpt::$types[Excerpt::$length]) )
      return Excerpt::$types[Excerpt::$length];
    else
      return Excerpt::$length;
  }

  public static function more($new_more = \'Read More\') {
    Excerpt::$more = $new_more;
    add_filter(\'excerpt_more\', \'Excerpt::new_more\', 999);
  }

  //Tell WP the custom more
  public static function new_more() {
    global $post;
    if(isset(Excerpt::$moreTypes[Excerpt::$more]) ) {
      return \' <a class="more-link" href="\'. get_permalink($post->ID) . \'">\'. __(Excerpt::$moreTypes[Excerpt::$more], \'doctoplus\') .\'</a>\';
    } else {
      return Excerpt::$more;
    }
  }
  // Echoes out the excerpt
  public static function output() {
    the_excerpt();
  }

}

// An alias to the class
function doctoplus_excerpt($length = 55, $more = "...") {
  Excerpt::length($length);
  Excerpt::more($more);
}
有人能帮我吗?我真的需要这样做。提前谢谢。

1 个回复
SO网友:modex98

你把它弄得有点复杂了,我用了这些简单的代码行;

add_filter(\'excerpt_length\', function ($length) {
    global $post;
    if ($post->post_type == \'portfolio\'){
        return 13;
    }
    return 50;
}, 100);

结束

相关推荐

如何在静态首页上使用_excerpt()创建“阅读更多”链接?

我正在开发一个使用静态首页的网站。它还显示了最近的一篇博客文章。这是通过创建页面和使用自定义页面模板来实现的。有时,博客文章太长,所以我想使用\\u摘录自动缩短它,而不需要更多标记。到目前为止还不错。但是,\\u摘录实际上并没有创建“阅读更多”链接。这是一个很常见的问题,所以我补充说:<?php function new_excerpt_more($more) { global $post; return \'... <a href=\"\'. get_