Wie überschreibe ich übergeordnete Funktionen in untergeordneten Designs?

29

Ich habe herumgelesen und versucht, herauszufinden, wie das geht, aber aus irgendeinem Grund kann ich die übergeordneten Funktionen in meinem untergeordneten Thema nicht außer Kraft setzen.

Ich benutze TwentyTen als Eltern - kann mir jemand sagen, warum diese Funktion in meinem Kindermotiv die Elternfunktion nicht überschreibt?

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

Ich dachte, Sie müssten den Filter / die Aktion usw. entfernen, bevor Sie ihn wieder hinzufügen, oder?

Vielen Dank,

osu

Osu
quelle

Antworten:

32

Sie sollten den Code nach dem Setup des Themas ausführen.

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
quelle
2
Ja. Und der Grund, warum es nicht direkt funktioniert, ist, dass der Code des untergeordneten Themas vor dem Code des übergeordneten Themas geladen wird.
Rarst