2012-02-28 79 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/