所以答案取决于你所说的“当类别为429时”是什么意思。这可能意味着:
您当前正在查看类别429的存档,希望将其添加到列出的所有帖子中
您当前正在查看博客、日期存档或搜索结果,并希望将此文本添加到属于429类的任何单个帖子中这些都是不同的事情,解决方案也各不相同。
对于要使用的#1is_category()
. 这将告诉您当前查看的页面是否是429类的存档,并将过滤器应用于此页面上显示的所有摘录:
function mywiki_trim_excerpt( $excerpt ) {
if ( is_category( 429 ) ) {
$excerpt = substr( $excerpt, 0, -10 );
$excerpt = $excerpt . \'...<a class="bigger" href="\' . get_permalink() . \'" title="\' . __( \'read more...\', \'mywiki\' ) . \'">\' . __( \'Read more\', \'mywiki\' ) . \'</a>\';
}
return $excerpt;
}
add_filter( \'get_the_excerpt\', \'mywiki_trim_excerpt\' );
对于#2来说,它稍微复杂一些,因为您需要对照摘录的帖子检查类别。您可以通过在过滤器中接受2个参数来实现这一点(将第4个参数设置为
add_filter()
到
2
), 使用第二个参数(
$post
, 当前职位)具有
has_category()
:
function mywiki_trim_excerpt( $excerpt, $post ) {
if ( has_category( 429, $post ) ) {
$excerpt = substr( $excerpt, 0, -10 );
$excerpt = $excerpt . \'...<a class="bigger" href="\' . get_permalink() . \'" title="\' . __( \'read more...\', \'mywiki\' ) . \'">\' . __( \'Read more\', \'mywiki\' ) . \'</a>\';
}
return $excerpt;
}
add_filter( \'get_the_excerpt\', \'mywiki_trim_excerpt\', 10, 2 );
技术上
has_category()
无需通过即可工作
$post
. 如果你把它去掉,那么它会检查“当前帖子”的类别。99%的情况下,这与摘录所针对的帖子相同,但在极少数情况下,“当前”帖子可能与正在筛选其摘录的帖子不同。通过使用
$post
传递给过滤器的值可以保证我们检查类别的帖子与摘录的帖子是同一个帖子。