WordPress的多个摘录长度

正如它在标题中所说,我正在寻找WordPress的多个摘录长度。

我明白你可以在functions.php中做到这一点:

function twentyten_excerpt_length( $length ) { return 15; } add_filter( 'excerpt_length', 'twentyten_excerpt_length' ); 

我想知道的是如何可以有多个这些返回不同的数值,所以我可以得到一个简短的摘录侧栏循环,较长的摘要function循环,和主要文章最长的摘录。

就像在模板中使用这些东西:

 <?php the_excerpt('length-short') ?> <?php the_excerpt('length-medium') ?> <?php the_excerpt('length-long') ?> 

干杯,戴夫

怎么样…

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

然后在你的模板代码,你只是使用..

 <?php echo excerpt(25); ?> 

来自: http : //bavotasan.com/tutorials/limiting-the-number-of-words-in-your-excerpt-or-content-in-wordpress/

至于现在,你可以升级Marty的回复:

 function excerpt($limit) { return wp_trim_words(get_the_excerpt(), $limit); } 

你也可以这样定义自定义的“阅读更多”链接:

 function custom_read_more() { return '... <a class="read-more" href="'.get_permalink(get_the_ID()).'">more&nbsp;&raquo;</a>'; } function excerpt($limit) { return wp_trim_words(get_the_excerpt(), $limit, custom_read_more()); } 

这是我想出来的。

添加到你的functions.php

 class Excerpt { // Default length (by WordPress) public static $length = 55; // So you can call: my_excerpt('short'); public static $types = array( 'short' => 25, 'regular' => 55, 'long' => 100 ); /** * Sets the length for the excerpt, * then it adds the WP filter * And automatically calls the_excerpt(); * * @param string $new_length * @return void * @author Baylor Rae' */ public static function length($new_length = 55) { Excerpt::$length = $new_length; add_filter('excerpt_length', 'Excerpt::new_length'); 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; } // Echoes out the excerpt public static function output() { the_excerpt(); } } // An alias to the class function my_excerpt($length = 55) { Excerpt::length($length); } 

它可以像这样使用。

 my_excerpt('short'); // calls the defined short excerpt length my_excerpt(40); // 40 chars 

这是我知道添加filter的最简单的方法,可以从一个函数调用。

我也在寻找这个function,这里的大部分function都很好,很灵活。 对于我自己的情况,我正在寻找一个解决scheme,只在特定页面上显示不同的摘录长度。 我正在使用这个:

 function custom_excerpt_length( $length ) { return (is_front_page()) ? 15 : 25; } add_filter( 'excerpt_length', 'custom_excerpt_length', 999 ); 

将此代码粘贴到主题functions.php文件中。

回到马蒂的回答:

我知道这个答复已经出版已经过去了一年多了,但是迟到总比从未好过。 为了使这个限制超过WordPress默认的55,你需要replace这一行:

  $excerpt = explode(' ', get_the_excerpt(), $limit); 

用这一行:

  $excerpt = explode(' ', get_the_content(), $limit); 

否则,该function仅适用于已经裁剪好的文本。

我想我们现在可以使用wp_trim_words 在这里看到 。 不知道使用这个函数需要额外的数据转义和清理,但看起来很有趣。

你可以添加到你的functions.php文件这个function

 function custom_length_excerpt($word_count_limit) { $content = wp_strip_all_tags(get_the_content() , true ); echo wp_trim_words($content, $word_count_limit); } 

然后像这样在你的模板中调用它

 <p><?php custom_length_excerpt(50); ?> 

wp_strip_all_tags应该防止wp_strip_all_tags HTML标签打破页面。


有关function的文档

  • get_the_content
  • wp_trim_words
  • wp_strip_all_tags

这里是一个简单的方法来限制内容或摘录

 $content = get_the_excerpt(); $content = strip_tags($content); echo substr($content, 0, 255); 

如果你想要的内容,通过get_the_content()更改get_the_excerpt()。

问候

我发现一个很好的插件可以做到这一点 – 内容和摘录的字数限制

使用高级摘录
http://wordpress.org/extend/plugins/advanced-excerpt/插件。; 我也从这个页面find了答案。

我可以创build一个简短的代码,我没有尝试,但我写了关于其结构的主要想法

 function twentyten_excerpt_length($atts,$length=null){ shortcode_atts(array('exlength'=>'short'),$atts); if(!isset($atts['exlength']) || $atts['exlength'] == 'short') { return 15; }elseif( $atts['exlength'] == 'medium' ){ return 30; // or any value you like }elseif( $atts['exlength'] == 'long' ){ return 45; // or any value you like }else{ // return nothing } } add_shortcode('the_excerpt_sc','twentyten_excerpt_length'); 

所以你可以像这样使用它

 [the_excerpt_sc exlength="medium"] 

我知道这是一个非常古老的线程,但我只是努力解决这个问题,没有find我在网上find的解决scheme。 一方面,我自己的“片段更多”filter总是被切断。

我解决这个问题的方式很糟糕,但这是我能find的唯一的工作解决scheme。 这个丑陋涉及修改WP核心(!!)的4行+使用另一个全局variables(虽然WP已经做了这么多,我不觉得太糟糕)。

我把wp-includes / formatting.php中的wp_trim_excerpt改为:

 <?php function wp_trim_excerpt($text = '') { global $excerpt_length; $len = $excerpt_length > 0 ? $excerpt_length : 55; $raw_excerpt = $text; if ( '' == $text ) { $text = get_the_content(''); $text = strip_shortcodes( $text ); $text = apply_filters('the_content', $text); $text = str_replace(']]>', ']]&gt;', $text); $excerpt_length = apply_filters('excerpt_length', $len); $excerpt_more = apply_filters('excerpt_more', ' ' . '[&hellip;]'); $text = wp_trim_words( $text, $excerpt_length, $excerpt_more ); } $excerpt_length = null; return apply_filters('wp_trim_excerpt', $text, $raw_excerpt); } 

唯一的新东西是$excerpt_length$len位。

现在,如果我想更改默认长度,我在我的模板中做到这一点:

 <?php $excerpt_length = 10; the_excerpt() ?> 

改变核心是一个可怕的解决scheme,所以我很想知道是否有人提出更好的东西。

小心使用这些方法中的一部分。 不是所有的人都把html标签去掉,这意味着如果有人在他们的post的第一句话中插入了一个video(或url)的链接,video(或链接)将显示在摘录中,可能会炸毁你的网页。

我会这样做:

 function _get_excerpt($limit = 100) { return has_excerpt() ? get_the_excerpt() : wp_trim_words(strip_shortcodes(get_the_content()),$limit); } 

用法:

 echo _get_excerpt(30); // Inside the loop / query 

为什么?

  • 如果has_excerpt应该返回给定的摘录
  • 它不是,所以从the_content 修剪词 / strip短 the_content

这里是一篇关于在WordPres中使用自定义摘录长度的文章。 有一些方法来限制和控制后的摘录长度。

  1. 限制文章摘录长度或文章内容长度使用文字数量。
  2. 将摘要长度限制为多个字符。
  3. 通过添加“阅读更多”标签来限制发布摘要。
  4. 启用自定义摘录为每个post写自己的摘要。
  5. 使用filter控制摘录长度

http://smallenvelop.com/limit-post-excerpt-length-in-wordpress/我希望这会帮助你很多。;