Äquivalent von wp_enqueue_block_style für Skripte
Veröffentlicht: – Kommentar hinterlassen
Seit WordPress 5.9 gibt es die neue Funktion wp_enqueue_block_style
, um Block-Stile nur einzubinden, wenn sie benötigt werden, also wenn der entsprechende Block auf der aktuellen Seite angezeigt wird. Während das einen großen Mehrwert bietet, gibt es dabei keine Unterstützung für Skripte. Wenn dein Block also entsprechendes JavaScript nur für das Frontend benötigt, gibt es dafür keine vorgefertigte Funktion in WordPress.
Glücklicherweise hat WordPress 5.9 auch das Attribut view_script
zur Funktion register_block_type
hinzugefügt, womit man ein Skript-Handle definieren kann, das nur eingebunden wird, wenn der entsprechende Block auf der aktuellen Seite angezeigt wird. Mit WordPress 6.1 wurde dieses Attribut schon wieder zugunsten des neuen Attributes view_script_handles
als veraltet markiert. Dieses wiederum erlaubt die Angabe mehrerer Skript-Handles und somit auch deren simultane Einbindung. Aus Kompatibilitätsgründen sollten wir daher beide Varianten verwenden:
register_block_type(
'my/block',
[
// since WP 5.9
'view_script' => 'my-block-script',
// since WP 6.1
'view_script_handles' => [
'my-block-script',
],
],
);
Code-Sprache: PHP (php)
Hier registrieren wir den Block my/block
(ich habe die anderen Attribute hier ausgelassen) und definieren ein Anzeigeskript mit dem Handle my-block-script
. Diese Funktion kann außerhalb irgendwelcher Hooks aufgerufen werden.
Jetzt müssen wir sicherstellen, dass unser Frontend-Skript auch regulär registriert ist:
/**
* Register frontend assets.
*/
public function my_register_frontend_assets(): void {
$file_path = plugin_dir_path( __FILE__ ) . 'assets/js/file.js';
$file_url = plugin_dir_url( __FILE__ ) . 'assets/js/file.js';
wp_register_script( 'my-block-script', $file_url, [], filemtime( $file_path ), true );
}
add_action( 'init', 'my_register_frontend_assets' );
Code-Sprache: PHP (php)
Da das Anzeigeskript via wp_enqueue_scripts
eingebunden wird, musst du sicherstellen, dass du dein Skript vorher registrierst, um die Magie zu sehen. ✨