Block-CSS oder -JS nachladen

Wenn Du Deinen CSS- oder JS-Block manuell nachladen möchtest, solltest Du sicherstellen, dass die Datei auch wirklich existiert. Sonst wird es schwierig. Du willst doch nicht versuchen, einen Block ohne CSS auszuführen? (Klingt wie eine Horrorvorstellung für Webdesigner!) Mit der PHP-Funktion file_exists() kannst Du ganz einfach überprüfen, ob die Datei existiert. Der Pfad zur Datei wird übrigens nicht mit get_stylesheet_directory_uri() ausgegeben, sondern mit get_theme_file_path(). Klar, oder?

Dieser PHP-Code lädt das CSS für einen bestimmten Block, wenn dieser nicht automatisch in den Blockinhalt eingefügt wird. Dazu wird die Funktion add_action() verwendet, um eine Aktion mit dem Namen init auszulösen und die Funktion uldi_get_header_action() aufzurufen. Innerhalb dieser Funktion wird zuerst überprüft, ob sich der Benutzer im Admin-Bereich befindet oder nicht.

Wenn der Benutzer nicht im Admin-Bereich ist, wird überprüft, ob die CSS-Datei für den betreffenden Block vorhanden ist. Wenn dies der Fall ist, wird das CSS mit wp_enqueue_style() geladen und dem Block zugeordnet. Das bedeutet, dass das CSS nur dann geladen wird, wenn es tatsächlich benötigt wird, was die Website schneller und effizienter macht.

Eventuell ist es nötig, mit clearstatcache() vorgängig den Status-Cache zu löschen.

add_action( 'init', 'uldi_get_header_action', 10, 1 );
function uldi_get_header_action(){
	if(!is_admin()){
		
		//CSS für Block laden, da dieser nicht per Block eingefügt wird
		$block_css = get_theme_file_path( '/blocks/myblock/block.css');
		clearstatcache();
		if(file_exists($block_css)):
			$css_path = get_stylesheet_directory_uri() . '/blocks/myblock/block.css';
			wp_enqueue_style('block_css', $css_path, [], 1 );
		endif;	
	}
}
1 Star2 Stars3 Stars4 Stars5 Stars (0)

Deine Meinung ist uns wichtig! Auch wenn du denkst, dass unser Beitrag so spannend wie eine Präsentation über die Vorteile von Kalkulationstabellen ist, teile es uns mit!

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert