默认情况下,wordpress中的摘录长度为55个字。
我可以使用以下代码修改此值:
function new_excerpt_length($length) {
return 20;
}
add_filter('excerpt_length', 'new_excerpt_length');
因此,以下调用只返回20个字:
the_excerpt();
但我无法弄清楚如何添加参数以获得不同的长度,以便我可以调用,例如:
the_excerpt(20);
the_excerpt(34);
有什么想法吗?谢谢!
答案 0 :(得分:7)
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 :(得分:1)
就我发现使用the_excerpt()而言,没有办法做到这一点。
有类似的StackOverflow问题here。
我唯一要做的就是编写一个新函数来获取the_excerpt()的位置。将下面代码的一些变体放入 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)
还有“高级摘录”插件,提供您可以检查的功能。
答案 2 :(得分: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');