WordPress Child Theme: @import

Es gilt als Best Practice für schnelle Webseiten auf @import Anweisungen in Stylesheets zu verzichten, weil sie zu Ladeverzögerungen in Internet Explorer führen können. Besser sind in diesem Zusammenhang <link> Elemente.

Um das in Child Themes umzusetzen dupliziere ich gerne die header.php Datei des Elternthemes und „räume auf“. Bei TwentyEleven beispielsweise missfällt mir wirklich wie es das <title> Element zusammenbaut und JavaScript Dateien im Template anhängt.

Im Child Theme erstelle ich eine functions.php Datei, in der ich dann die gewünschten Stylesheets und JavaScript Dateien registriere und später anhänge. Unter anderem auch die, die ich aus der duplizierten header.php entfernt habe.

function prefix_register_scripts_styles() {

	if ( ! is_admin() ) {
		$suffix = ( defined('SCRIPT_DEBUG') AND SCRIPT_DEBUG ) ? '.dev' : '';

		/**
		 * Scripts
		 */
		wp_register_script(
			'modernizr',
			'http://cdnjs.cloudflare.com/ajax/libs/modernizr/2.0.6/modernizr.min.js',
			array(),
			'2.0.6'
		);

		wp_register_script(
			'textdomain-showcase',
			get_stylesheet_directory_uri() . "/js/showcase{$suffix}.js",
			array('jquery'),
			filemtime( STYLESHEETPATH . "/js/showcase{$suffix}.js")
		);

		/**
		 * Styles
		 */
		wp_register_style(
			'twentyeleven',
			get_template_directory_uri() . "/style.css",
			array(),
			filemtime( TEMPLATEPATH . "/style.css")
		);
		wp_register_style(
			'textdomain',
			get_stylesheet_directory_uri() . "/style{$suffix}.css",
			array('twentyeleven'),
			filemtime( STYLESHEETPATH . "/style{$suffix}.css")
		);
	}
}
add_action( 'init', 'prefix_register_scripts_styles' );

function prefix_print_scripts_styles() {

	wp_enqueue_script( 'modernizr' );
	wp_enqueue_style( 'textdomain' );

	if ( is_singular() AND get_option( 'thread_comments' ) ) {
		wp_enqueue_script( 'comment-reply' );
	}

	if ( is_page_template('showcase.php') ) {
		wp_dequeue_script( 'twentyeleven-showcase' );
		wp_enqueue_script( 'textdomain-showcase' );
	}
}
add_action( 'wp_enqueue_scripts', 'prefix_print_scripts_styles' );