如果标题长度超过40个字符,我正在修改面包屑脚本以追加'...'
。我得到的那部分很好,但我不能正确的是如何将它嵌入这个庞大的脚本中,如果它长度不超过40个字符就可以保留它。
我甚至需要其他人吗?我从未遇到过多个if
没有else
或elseif
} elseif ( is_single() && !is_attachment() ) {
if ( get_post_type() != 'post' ) {
$post_type = get_post_type_object(get_post_type());
$slug = $post_type->rewrite;
echo '<a href="' . $homeLink . '/' . $slug['slug'] . '/">' . $post_type->labels->singular_name . '</a>';
if ($showCurrent == 1) echo ' ' . $delimiter . ' ' . $before . substr(the_title('', '', FALSE), 0, 40) . $after;
} else {
$cat = get_the_category(); $cat = $cat[0];
$cats = get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
if ($showCurrent == 0) $cats = preg_replace("#^(.+)\s$delimiter\s$#", "$1", $cats);
echo $cats;
if (($showCurrent == 1) && (strlen($post->post_title) > 40)) echo $before . substr(the_title('', '', FALSE), 0, 40) . '...' . $after;
} elseif {
if (($showCurrent == 1) && (strlen($post->post_title) < 40)) echo $before . get_the_title() . $after;
}
答案 0 :(得分:0)
最后一个elseif
无效,因为它前面已有一个else。
我还要说你应养成使用标准化写法if / else语句的习惯。在我看来,你的代码可能搞砸了,因为你有一些没有花括号的if语句和一些。例如,如果您要在所有情况下使用花括号,并对它们使用适当的缩进,那么您可以非常清楚地发现有和其他条件遵循其他条件的问题。
举个例子:
if ( get_post_type() != 'post' ) {
$post_type = get_post_type_object(get_post_type());
$slug = $post_type->rewrite;
echo '<a href="' . $homeLink . '/' . $slug['slug'] . '/">' . $post_type->labels->singular_name . '</a>';
if ($showCurrent == 1) {
echo ' ' . $delimiter . ' ' . $before . substr(the_title('', '', FALSE), 0, 40) . $after;
}
} else {
$cat = get_the_category(); $cat = $cat[0];
$cats = get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
if ($showCurrent == 0) {
$cats = preg_replace("#^(.+)\s$delimiter\s$#", "$1", $cats);
}
echo $cats;
if (($showCurrent == 1) && (strlen($post->post_title) > 40)) {
echo $before . substr(the_title('', '', FALSE), 0, 40) . '...' . $after;
}
} else if {
if (($showCurrent == 1) && (strlen($post->post_title) < 40)) {
echo $before . get_the_title() . $after;
}
}
对我而言,即使它稍微冗长一点,也会更加清晰。很明显,最后的其他 - 如果没有意义。
顺便说一句,在修复逻辑时,请确保考虑如果字符串长度正好为40个字符会发生什么。
答案 1 :(得分:0)
看起来你可能会遗漏一些大括号
} elseif ( is_single() && !is_attachment() ) {
if ( get_post_type() != 'post' ) {
$post_type = get_post_type_object(get_post_type());
$slug = $post_type->rewrite;
echo '<a href="' . $homeLink . '/' . $slug['slug'] . '/">' . $post_type->labels->singular_name . '</a>';
if ($showCurrent == 1) { echo ' ' . $delimiter . ' ' . $before . substr(the_title('', '', FALSE), 0, 40) . $after; }
} else {
$cat = get_the_category(); $cat = $cat[0];
$cats = get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
if ($showCurrent == 0) { $cats = preg_replace("#^(.+)\s$delimiter\s$#", "$1", $cats);
echo $cats; }
if (($showCurrent == 1) && (strlen($post->post_title) > 40)) { echo $before . substr(the_title('', '', FALSE), 0, 40) . '...' . $after; }
} elseif {
if (($showCurrent == 1) && (strlen($post->post_title) < 40)) { echo $before . get_the_title() . $after; }
}
答案 2 :(得分:0)
逻辑不明确。您还没有处理长度恰好为40个字符的情况。
尝试构建代码,这样您只需要评估一次相同的表达式。也许这就是你的意思?
} elseif ( is_single() && !is_attachment() ) {
if ( get_post_type() != 'post' ) {
...
} else {
...
echo $cats;
if (($showCurrent == 1) && (strlen($post->post_title) > 40))
echo $before . substr(the_title('', '', FALSE), 0, 40) . '...' . $after;
}
else {
echo $before . get_the_title() . $after;
}
}
} // Close the elseif