2012-02-28 87 views
0

我增加了以下內容的functions.php:自定義功能,限制摘錄長度返回文章標題爲摘錄(WP)的一部分

function excerpt($limit) { 
global $id; 
    $excerpt = explode(' ', get_the_excerpt(), $limit); 
    if (count($excerpt)>=$limit) { 
    array_pop($excerpt); 
    $excerpt = implode(" ",$excerpt).'... <p class="readmore"><a href="'. get_permalink($id) . '" title="' . the_title_attribute(array('echo' => 0, 'before' => 'Permalink to: ', 'after' => '')) . the_title() . '">Read More &#187;</a></p>'; 
    } else { 
$excerpt = implode(" ",$excerpt).'... <p class="readmore"><a href="'. get_permalink($id) . '" title="' . the_title_attribute(array('echo' => 0, 'before' => 'Permalink to: ', 'after' => '')) . the_title() . '">Read More &#187;</a></p>'; 
    } 
    $excerpt = preg_replace('`\[[^\]]*\]`','',$excerpt); 
    return $excerpt; 
} 

,由於某種原因它返回的文章標題爲摘錄的一部分(帖子標題第一,然後摘錄沒有標題之間的空間&摘錄 - 樣本在這裏:http://autisticadvocacy.uniongraphics.org/category/news/)。有人可以告訴我我做錯了什麼嗎?

回答

1
$excerpt = implode(" ",$excerpt) 
    . '... <p class="readmore"><a href="' 
    . get_permalink($id) 
    . '" title="' 
    . the_title_attribute(array(
     'echo' => 0, 
     'before' => 'Permalink to: ', 
     'after' => '')) 
    ### change is in this line. (the_title() removed) 
    . '">Read More &#187;</a></p>' 
    ; 

您編寫代碼的方式很難閱讀,因此很難在遇到問題時進行調試。試着改善這一點。爲了更好的格式化字符串有用的功能是sprintf()

$excerpt = sprintf('%s ... <p class="readmode"><a href="%s" title="%s">Read More &#187;</a></p>' 
    , implode(" ",$excerpt), get_permalink($id) 
    , the_title_attribute(array('echo' => 0, 'before' => 'Permalink to: ', 'after' => '')) 
); 
0

下面的代碼添加到您的functions.php文件的摘錄和內容。

<?php 
// Custom Excerpt 
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; 
} 

// Content Limit 
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; 
} 
?> 

現在,而不是使用the_content()或the_excerpt在循環,使用摘錄($限制)或內容($限制)。

如果你想你的摘錄限制在300個字的代碼是這樣的:

<?php echo excerpt(50); ?> 
<?php echo content(300); ?> 

我得到了另一種方式字符顯示有限的摘錄。這裏是functions.php文件的代碼。

function get_excerpt(){ 
$excerpt = get_the_content(); 
$excerpt = preg_replace(" (\[.*?\])",'',$excerpt); 
$excerpt = strip_shortcodes($excerpt); 
$excerpt = strip_tags($excerpt); 
$excerpt = substr($excerpt, 0, 100); 
$excerpt = substr($excerpt, 0, strripos($excerpt, " ")); 
$excerpt = trim(preg_replace('/\s+/', ' ', $excerpt)); 
$excerpt = $excerpt.'... <a href="'.get_the_permalink().'">Read More</a>'; 
return $excerpt; 
} 

在此之後,您需要添加您想要按字符顯示您的自定義字符的位置。

<?php echo get_excerpt(); ?> 

來源:http://www.e2soft.com/blog/custom-excerpt-and-content-limit-wordpress/