Support » Themes » style.css des child-themes wird 2x geladen

  • Gelöst Harald Wendler

    (@harald-wendler)


    in der funktion.php steht:

    <?php
    
    /***** Load Stylesheets *****/
    
    function mh_newsdesk_child_styles() {
        wp_enqueue_style('mh-newsdesk-parent-style', get_template_directory_uri() . '/style.css');
        wp_enqueue_style('mh-newsdesk-child-style', get_stylesheet_directory_uri() . '/style.css', array('mh-newsdesk-parent-style'));
    }
    add_action('wp_enqueue_scripts', 'mh_newsdesk_child_styles');
    
    /***** Output Post Meta Data *****/
    
    function mh_newsdesk_mg_meta() {
    	$mh_newsdesk_options = mh_newsdesk_theme_options();
    	$post_cat = !$mh_newsdesk_options['post_meta_cat'];
    	$post_author = !$mh_newsdesk_options['post_meta_author'];
    	$post_date = !$mh_newsdesk_options['post_meta_date'];
    	if ($post_cat || $post_author || $post_date) {
    		echo '<p class="entry-meta">' . "\n";
    			if (has_category() && $post_cat && !is_single()) {
    				echo sprintf(_x('%s', 'post category', 'mh-newsdesk'), '<span class="entry-meta-cats">' . get_the_category_list(', ', '') . '</span>') . "\n";
    			}
    			if ($post_date) {
    				echo '<span class="entry-meta-date updated">' . get_the_date() . '</span>' . "\n";
    			}
    			if ($post_author) {
    				echo '<span class="entry-meta-author vcard author">' . sprintf(_x('Posted By: %s', 'post author', 'mh-newsdesk'), '<a class="fn" href="' . esc_url(get_author_posts_url(get_the_author_meta('ID'))) . '">' . esc_html(get_the_author()) . '</a>') . '</span>' . "\n";
    			}
    			echo '<span class="entry-meta-comments">' . sprintf(_nx('1 Kommentar', '%1$s Kommentare', get_comments_number(), 'comments number', 'mh'), number_format_i18n(get_comments_number())) . '</span>' . "\n";
    		echo '</p>' . "\n";
    	}
    }
    
    //* IP-Adressen in Kommentaren löschen *//
    
    function  wpb_remove_commentsip( $comment_author_ip ) {
    	return '';
    	}
    add_filter( 'pre_comment_user_ip', 'wpb_remove_commentsip' );
    
    /***** Remove Google Fonts *****/
    
    function mh_newsdesk_mg_remove_google_fonts() {
    	remove_action('customize_register', 'mh_newsdesk_typography_options');
    	remove_action('wp_enqueue_scripts', 'mh_newsdesk_google_webfonts');
    	remove_action('wp_head', 'mh_newsdesk_fonts_css'); 
    }
    add_action( 'after_setup_theme', 'mh_newsdesk_mg_remove_google_fonts' );

    wp 5.8.3

    Die Seite, für die ich Hilfe brauche: [Anmelden, um den Link zu sehen]

Ansicht von 13 Antworten - 1 bis 13 (von insgesamt 13)
  • Hey Harald, schau doch mal in der functions.php des Parent-Theme, mit welchem „Handle“ das Stylesheet eingebunden wird. Das wird ja nicht mh-newsdesk-parent-style heißen? (Ich kann mir das kostenpflichtige Theme nicht ansehen, aber als Vergleich siehst du in MH Magazine Lite hier, wie das Stylesheet eingebunden wird:
    https://themes.trac.wordpress.org/browser/mh-magazine-lite/2.9.2/functions.php#L104 – Das „Handle“ ist hier mh-magazine-lite.) Du musst das Handle dann entsprechend in der functions.php deines Child-Theme verwenden. Wahrscheinlich sowas wie …

    <?php
    
    /***** Load Stylesheets *****/
    
    function mh_newsdesk_child_styles() {
        wp_enqueue_style('mh-newsdesk', get_template_directory_uri() . '/style.css');
        wp_enqueue_style('mh-newsdesk-child', get_stylesheet_directory_uri() . '/style.css', array('mh-newsdesk'));
    }
    add_action('wp_enqueue_scripts', 'mh_newsdesk_child_styles');
    
    …
    

    Sorry, ich stelle gerade fest, dass ich Quatsch geschrieben habe.

    Das Stylesheet des Child-Theme wird wohl zweimal eingebunden, einmal mit einer ID
    mh-newsdesk-child-style-css
    und einmal mit einer ID
    mh-style-css.

    Das erste von den beiden stammt offensichtlich aus der functions.php des Child-Themes. Das zweite muss woanders eingefügt worden sein – an anderer Stelle der functions.php, in einem Plugin …
    Wenn du per SSH auf den Server zugreifen kannst, könntest du mit grep nach der Funktion suchen, die das einfügt.

    Im WordPress-Verzeichnis sollte
    grep -r -n 'mh-style-css' wp-content
    etwas ausgeben wie
    WordPress/wp-content/themes/mh_newsdesk_mg_heute/functions.php:17: wp_enqueue_style( 'twentytwo-child-style',

    (die Funktion ist in diesem Beispiel in Zeile 17 der functions.php im Verzeichnis wp-content/themes/mh_newsdesk_mg_heute)

    Thread-Starter Harald Wendler

    (@harald-wendler)

    Hallo Bego,
    so sieht es in der funktion.php des parent theme aus.
    Passt Dein Vorschlag dazu?

    /***** Load CSS & JavaScript *****/
    
    if (!function_exists('mh_newsdesk_scripts')) {
    	function mh_newsdesk_scripts() {
    
    	    global $mh_newsdesk_version;
    
    		wp_enqueue_style('mh-style', get_stylesheet_uri(), false, $mh_newsdesk_version);
    		wp_enqueue_style('mh-font-awesome', get_template_directory_uri() . '/includes/font-awesome.min.css', array(), null);
    		wp_enqueue_script('mh-scripts', get_template_directory_uri() . '/js/scripts.js', array('jquery'));
    		if (is_singular() && comments_open() && get_option('thread_comments') == 1) {
    			wp_enqueue_script('comment-reply');
    		}
    	}
    }
    add_action('wp_enqueue_scripts', 'mh_newsdesk_scripts');
    
    if (!function_exists('mh_newsdesk_admin_scripts')) {
    	function mh_newsdesk_admin_scripts($hook) {
    		if ('appearance_page_newsdesk' === $hook || 'widgets.php' === $hook) {
    			wp_enqueue_style('mh-admin', get_template_directory_uri() . '/admin/admin.css');
    		}
    	}
    }
    add_action('admin_enqueue_scripts', 'mh_newsdesk_admin_scripts');
    • Diese Antwort wurde geändert vor 9 Monaten, 4 Wochen von Bego Mario Garde. Grund: Code formatiert

    Unsere Antworten haben sich wohl überschnitten. Bitte schau nochmal, was ich zuletzt geschrieben habe: https://de.wordpress.org/support/topic/style-css-des-child-themes-wird-2x-geladen/#post-122769

    Thread-Starter Harald Wendler

    (@harald-wendler)

    Bin erst gegen 18 Uhr wieder da!

    Thread-Starter Harald Wendler

    (@harald-wendler)

    Hallo Bego,

    leider ergab der lange Suchlauf mit grep -r -n ‚mh-style-css‘ wp-content kein einziges Ergebnis.

    Hallo Harald,
    ich habe das Theme MH Magazine lite in der kostenfreien Version in einer lokalen Entwicklungsumgebung installiert und ein Child Theme erstellt.
    Selbst da wird die style.css zwei mal geladen, auch wenn ich nur die function für die stylesheets in der functions.php habe.
    Erstaunlicherweise passiert das aber auch, wenn ich ein Child Theme zu Twenty Twenty erstellt habe. Bei GeneratePress gibt es das Problem bei einem Child Theme dagegen nicht, weil das da wohl anders gehandelt wird und die function nicht benötigt wird.
    Ich bin gerade einigermaßen ratlos.
    Sorry, aber eine Lösung fällt mir gerade nicht ein.
    Viele Grüße
    Hans-Gerd

    Das Theme Handbook schreibt im Absatz Enqueue stylesheet:

    Wenn das Parent Theme seinen Stil mit einer Funktion lädt, die mit get_stylesheet beginnt, wie get_stylesheet_directory() und get_stylesheet_directory_uri(), muss das Child Theme sowohl die Parent- als auch die Child-Stylesheets laden. Achten darauf, dass du für die Parent-Stylesheets denselben Handle-Namen verwendest wie für die Parent-Stylesheets.

    Deshalb war meine erste Idee, im Child-Theme das gleiche Handle für das Parent-Theme-Stylesheet zu verwenden, wie im Parent-Theme selbst. Anders ausgedrückt:
    Wenn im Parent Theme in der functions.php steht

    wp_enqueue_style('mh-style', get_stylesheet_uri(), false, $mh_newsdesk_version);

    dann solltest du das im Child-Theme ebenfalls verwenden:

    function mh_newsdesk_child_styles() {
        wp_enqueue_style('mh-style', get_template_directory_uri() . '/style.css');
        wp_enqueue_style('mh-newsdesk-child-style', get_stylesheet_directory_uri() . '/style.css', array('mh-style'));
    }
    add_action('wp_enqueue_scripts', 'mh_newsdesk_child_styles');

    Ändere das doch bitte mal in der functions.php des Child-Theme und dann schauen wir uns das nochmal an.

    Thread-Starter Harald Wendler

    (@harald-wendler)

    Hallo zusammen,

    nun schaut mal… 🙂

    Nach einer kleinen Schrecksekunde (oder zwei?) sieht’s doch gut aus?

    Thread-Starter Harald Wendler

    (@harald-wendler)

    unter der Zeile
    add_action(‚wp_enqueue_scripts‘, ‚mh_newsdesk_child_styles‘);
    stand ein überflüssiges
    }

    dadurch war die Seite weg.

    Nun bin ich erstmal beruhigt und kann nun versuchen, die Einträge aus dem Customer style zu übertragen.
    Aber erst später…

    Euch ein dickes Dankeschön.

    Schönen Abend
    Harald

    perfekt 👍
    Wobei Bego wohl die Lösung hatte 🎉
    Schönen Abend

    stand ein überflüssiges } dadurch war die Seite weg.

    Da weiß ich doch, dass dich sowas nicht mehr aus der Ruhe bringt. 😉

    Thread als „gelöst“ markiert.

Ansicht von 13 Antworten - 1 bis 13 (von insgesamt 13)
  • Das Thema „style.css des child-themes wird 2x geladen“ ist für neue Antworten geschlossen.