Как вы можете обернуть add_filter с помощью инструкции if_home ()?

У меня есть следующий код:

if ( !function_exists( 'df_excerpt_more' ) ) { function df_excerpt_more( $more ) { return ' &hellip; <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_filter» и выполнить ее только в том случае, если страница находится дома. Поэтому я стараюсь:

 if ( !function_exists( 'df_excerpt_more' ) ) { function df_excerpt_more( $more ) { return ' &hellip; <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; } 

По какой-то причине это не работает. Кажется, что-то очень простое. Что мне не хватает?

Solutions Collecting From Web of "Как вы можете обернуть add_filter с помощью инструкции if_home ()?"

Функция is_home() недоступна до действия parse_query . Поэтому вы, вероятно, захотите переписать свой код так:

 if ( ! function_exists( 'df_excerpt_more' ) ) { function df_excerpt_more( $more ) { return ' &hellip; <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; }