Redeclare eine function in einem untergeordneten Thema

Ich möchte eine function neu deklarieren, die ich vom übergeordneten Thema geerbt habe.

Wenn ich es in functions.php mache, bekomme ich einen fatalen Fehler, dass eine Deklaration nicht möglich ist.

Ich habe einen Workaround gemacht: einen modifizierten functionsnamen erstellen und alle Vorlagendateien, index.php usw. in das Verzeichnis des untergeordneten Themas kopieren und die functionsaufrufe neu schreiben. Jetzt wird die neue function aufgerufen.

Dies funktioniert, ignoriert jedoch alle Aktualisierungen, die das übergeordnete Thema haben würde.

Gibt es dafür eine bessere Lösung?

Solutions Collecting From Web of "Redeclare eine function in einem untergeordneten Thema"

Das erneute Deklarieren einer function in einem untergeordneten Thema funktioniert nur, wenn die function der übergeordneten Themen in a eingehüllt ist

if( !function_exists( 'function_name' )): 

Bedingung. Dann können Sie einfach die komplette function in das untergeordnete Thema kopieren und die erforderlichen Änderungen vornehmen.

Wenn die functionen der übergeordneten Schemas nicht in die bedingte statement eingeschlossen sind und keine Filter oder Hooks in der function bereitgestellt werden, ist es am besten, die function in Ihr untergeordnetes Thema zu kopieren, diese function umzubenennen und dann Ihre Änderungen vorzunehmen Aktualisieren Sie Ihre Vorlagendateien entsprechend, um die neue function widerzuspiegeln.

Sie können die function zuerst mit entfernen

 remove_filter( 'hook', 'function_name' ); 

und fügen Sie die function dann erneut mit dem neuen Namen und dem gleichen Hook hinzu.

Beispielsweise

  function remove_content_filter() { remove_filter( 'the_content', 'function_name' ); } add_action( 'after_setup_theme', 'remove_content_filter' ); function new_function_name( $output ) { //some code here return $output; } add_filter( 'the_content', 'new_function_name' );