Як замінити батьківські функції в дочірніх темах?


29

Я читав і намагався зрозуміти, як це зробити, але я чомусь не можу перекрити батьківські функції в моїй дочірній темі.

Я використовую TwentyTen як батьків - чи може хто-небудь сказати мені, чому ця функція в моїй дочірній темі не перевершує батьківську функцію?

// Override read more link
function osu_twentyten_continue_reading_link() {
 return ' <a href="'. get_permalink() . '">' . __( 'Read on <span class="meta-nav">&rarr;</span>', 'twentyten-child' ) . '</a>';
}
function osu_twentyten_auto_excerpt_more( $more ) {
 return ' &hellip;' . osu_twentyten_continue_reading_link();
}
remove_filter( 'excerpt_more', 'twentyten_auto_excerpt_more' );
add_filter( 'excerpt_more', 'osu_twentyten_auto_excerpt_more' );

Я думав, що вам доведеться видалити фільтр / дію тощо, перш ніж повторно додати його правильно?

Спасибі,

osu

Відповіді:


32

Ви повинні запустити код після налаштування теми.

function osu_twentyten_continue_reading_link() {
    return ' <a href="'. get_permalink() . '">' . __( 'Read on <span class="meta-nav">&rarr;</span>', 'twentyten-child' ) . '</a>';
}

function osu_twentyten_auto_excerpt_more( $more ) {
    return ' &hellip;' . osu_twentyten_continue_reading_link();
}

function my_child_theme_setup() {
    remove_filter( 'excerpt_more', 'twentyten_auto_excerpt_more' );
    add_filter( 'excerpt_more', 'osu_twentyten_auto_excerpt_more' );
}

add_action( 'after_setup_theme', 'my_child_theme_setup' );

2
Так. І причина, що вона не працює безпосередньо, полягає в тому, що код дочірньої теми завантажується перед батьківською темою.
Рарст
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.