我有以下代码:
if ( !function_exists( \'df_excerpt_more\' ) ) {
function df_excerpt_more( $more ) {
return \' … <a class="more-link" href="\' . esc_url( get_permalink( get_the_ID() ) ) . \'">\' . esc_attr__( \'Read More\', \'applique\' ) . \'<i class="ion-ios-arrow-thin-right"></i></a>\';
}
add_filter( \'excerpt_more\', \'df_excerpt_more\' );
}
我想添加第二行“add\\u filter”,并仅在页面位于主页时执行它。所以我试着这样做:
if ( !function_exists( \'df_excerpt_more\' ) ) {
function df_excerpt_more( $more ) {
return \' … <a class="more-link" href="\' . esc_url( get_permalink( get_the_ID() ) ) . \'">\' . esc_attr__( \'Read More\', \'applique\' ) . \'<i class="ion-ios-arrow-thin-right"></i></a>\';
}
add_filter( \'excerpt_more\', \'df_excerpt_more\' );
//second filter if is home like this:
if ( is_home() ) :
add_filter(\'get_the_excerpt\', \'df_excerpt_more\');
endif;
}
出于某种原因,这是行不通的。看起来很简单。我错过了什么?
最合适的回答,由SO网友:Wes Moberly 整理而成
这个is_home()
函数在parse_query
行动因此,您可能希望像这样重写代码:
if ( ! function_exists( \'df_excerpt_more\' ) ) {
function df_excerpt_more( $more ) {
return \' … <a class="more-link" href="\' . esc_url( get_permalink( get_the_ID() ) ) . \'">\' . esc_attr__( \'Read More\', \'applique\' ) . \'<i class="ion-ios-arrow-thin-right"></i></a>\';
}
}
add_action( \'parse_query\', \'df_add_excerpt_filters\' );
function df_add_excerpt_filters() {
add_filter( \'excerpt_more\', \'df_excerpt_more\' );
if ( is_home() ) :
add_filter( \'get_the_excerpt\', \'df_excerpt_more\' );
endif;
}