Como substituir funções pai em temas filhos?

29

Eu tenho lido e tentado descobrir como fazer isso, mas por alguma razão eu não consigo substituir as funções dos pais no meu tema filho.

Estou usando o TwentyTen como pai - alguém pode me dizer por que essa função no meu tema filho não está substituindo a função pai, por favor?

// 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' );

Eu pensei que você tinha que remover o filtro / ação etc. antes de adicioná-lo novamente, certo?

Obrigado,

osu

Osu
fonte

Respostas:

32

Você deve executar o código após a instalação do tema.

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' );
sorich87
fonte
2
Sim. E a razão pela qual ele não funciona diretamente é que o código do tema filho é carregado antes do tema pai.
Rarst