Support » Themes » Entfernen von Funktion aus Parent-Theme

  • Hallo zusammen,
    ich hoffe, ihr könnt mir helfen.

    In meinem Parent-Theme gibt es in der functions.php folgende Funktion, die ich nicht benötige:

    function courage_custom_fonts() {
        wp_enqueue_style( 'courage-custom-fonts', get_template_directory_uri() . '/css/custom-fonts.css', array(), '20180413' );
    }
    add_action( 'wp_enqueue_scripts', 'courage_custom_fonts', 1 );
    add_action( 'enqueue_block_editor_assets', 'courage_custom_fonts', 1 );

    Wie kann ich in der functions.php meines Child-Themes diese Funktion entfernen? Ich habe schon das eine oder andere ausprobiert – aber leider ohne Erfolg. Entweder es kam zu einem Fehler oder die kompletten Stylesheets des Parent-Themes waren plötzlich verschwunden.

    Vielleicht hat jemand von euch eine Lösung.

    Gruß
    Manuel`

    • Dieses Thema wurde geändert vor 2 Jahren, 3 Monaten von madebykaufmann.
Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)
  • Wenn dein Parent Theme mit add_action( 'name_des_hook', 'name_der_funktion' ); eine Funktion einbindet, kannst du die mit

    add_action( 'init', 'remove_actions_parent_theme');
    
    function remove_actions_parent_theme() {
         remove_action( 'name_des_hook','name_der_funktion' );
    };

    wieder herausnehmen. Bei Bedarf kannst du dann an der Stelle wieder eine eigene Funktion mit add_action() einbinden.

    In deinem Fall:

    add_action( 'init', 'remove_actions_parent_theme');
    
    function remove_actions_parent_theme() {
      remove_action( 'wp_enqueue_scripts', 'courage_custom_fonts' );
      remove_action( 'enqueue_block_editor_assets', 'courage_custom_fonts' );
    }
    Thread-Starter madebykaufmann

    (@madebykaufmann)

    Wenn ich deinen Code so verwende, wie du geschrieben hast, passiert gar nichts. Wenn ich bei beiden die selbe Priority (1) wie im Parent-Theme hinzufüge wird die custom-fonts.css im Quelltext der Seite nicht mehr angezeigt. Aber leider fehlt jetzt auch die style.css vom Parent-Theme. Dadurch ist das Layout natürlich komplett zerschossen.

    Schau mal in die Dokumentation: Enqueue stylesheet

    Wenn das Parent Theme ein Stylesheet mit wp_enqueue_style() einbindet, musst du das im Child-Theme auch machen. Üblicherweise sieht der erste Eintrag in der wp-config.php dann so aus:

    add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );
    function my_theme_enqueue_styles() {
        $parenthandle = 'parent-style'; // This is 'twentyfifteen-style' for the Twenty Fifteen theme.
        $theme = wp_get_theme();
        wp_enqueue_style( $parenthandle, get_template_directory_uri() . '/style.css', 
            array(),  // if the parent theme code has a dependency, copy it to here
            $theme->parent()->get('Version')
        );
        wp_enqueue_style( 'child-style', get_stylesheet_uri(),
            array( $parenthandle ),
            $theme->get('Version') // this only works if you have Version in the style header
        );
    }
Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)
  • Das Thema „Entfernen von Funktion aus Parent-Theme“ ist für neue Antworten geschlossen.