2010-08-28 60 views
0

默認情況下wordpress中摘錄的長度是55個字。WordPress的:如何根據參數獲得不同的摘錄長度

我可以用下面的代碼修改這個值:

function new_excerpt_length($length) { 
    return 20; 
} 
add_filter('excerpt_length', 'new_excerpt_length'); 

所以,下面的調用將返回剛剛20個字:

the_excerpt(); 

但我想不通,我怎麼能添加一個參數,以獲得不同的長度,以便我可以打電話,例如:

the_excerpt(20); 

the_excerpt(34); 

任何想法?謝謝!

回答

7

嗯,再回答我,該解決方案實際上是相當微不足道。據我所知,不可能將參數傳遞給函數my_excerpt_length()(除非您想修改wordpress的核心代碼),但可以使用全局變量。所以,你可以添加這樣的事情你的functions.php文件:調用循環中的摘錄之前

function my_excerpt_length() { 
global $myExcerptLength; 

if ($myExcerptLength) { 
    return $myExcerptLength; 
} else { 
    return 80; //default value 
    } 
} 
add_filter('excerpt_length', 'my_excerpt_length'); 

,然後,您可以指定$ myExcerptLength(不要忘記設置回值0,如果你想爲你的帖子的其餘部分)的默認值:

<?php 
    $myExcerptLength=35; 
    echo get_the_excerpt(); 
    $myExcerptLength=0; 
?> 
1

就我發現使用the_excerpt()而言,沒有辦法做到這一點。

還有一個類似的StackOverflow問題here

我發現要做的唯一事情就是寫一個新的函數來獲取這個表達式的地方。將以下代碼的一些變體放入functions.php並調用limit_content($ yourLength)而不是the_excerpt()。

function limit_content($content_length = 250, $allowtags = true, $allowedtags = '') { 
    global $post; 
    $content = $post->post_content; 
    $content = apply_filters('the_content', $content); 
    if (!$allowtags){ 
     $allowedtags .= '<style>'; 
     $content = strip_tags($content, $allowedtags); 
    } 
    $wordarray = explode(' ', $content, $content_length + 1); 
    if(count($wordarray) > $content_length) { 
     array_pop($wordarray); 
     array_push($wordarray, '...'); 
     $content = implode(' ', $wordarray); 
     $content .= "</p>"; 
    } 
    echo $content; 
} 

(功能信用:fusedthought.com

也有「先進摘錄」插件提供的功能這樣就可以查詢到。

+0

這僅僅是爲我工作的代碼...謝謝! – 2013-09-20 12:49:22

0

感謝您的回答,thaddeusmt。

我終於實現了以下解決方案,它提供取決於類別和計數器的不同長度($myCounter是循環內的計數器)

/* Custom length for the_excerpt */ 
function my_excerpt_length($length) { 
    global $myCounter; 

    if (is_home()) { 
     return 80; 
    } else if(is_archive()) { 
     if ($myCounter==1) { 
      return 60; 
     } else { 
      return 25; 
     } 
    } else { 
     return 80; 
    } 
} 
add_filter('excerpt_length', 'my_excerpt_length'); 
相關問題