Ich habe heute eine add_action Hook in WordPress programmiert, wo ich eine Variable als Parameter an die anonyme Funktion mitgegeben habe. Ich würde euch gerne zeigen wie.
Erst einmal der Code, wie ihr Variablen an die add_action Hooks weitergeben könnt:
add_action( 'enqueue_block_editor_assets', function() use ($foo){
wp_enqueue_script(
$foo,
get_template_directory_uri().'/blocks/'.$foo.'/block.js',
array( 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-editor' )
);
});
Meine Verwendung
Jetzt wollte ich jedoch nicht einmal mehr jedes Mal eine php-Datei anlegen, wenn ich einen Block programmiert habe und deswegen habe ich nach einer Lösung gesucht, wie ich denn alle Javascript-Dateien mit einem Mal laden lassen kann. Die Lösung sieht folgendermaßen aus:
foreach (glob(__DIR__ . '/*' , GLOB_ONLYDIR) as $block_path) {
$block_slug = str_replace(__DIR__.'/','',$block_path);
if( file_exists($block_path.'/'.$block_slug.'.php') ){
require_once($block_slug.'/'.$block_slug.'.php');
}elseif (file_exists($block_path.'/block.js')) {
add_action( 'enqueue_block_editor_assets', function() use ($slug){
wp_enqueue_script(
$slug,
get_template_directory_uri().'/blocks/'.$slug.'/block.js',
array( 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-editor' )
);
});
wp_enqueue_style(
$block_slug.'-style',
get_template_directory_uri().'/blocks/'.$block_slug.'/'.$block_slug.'.css'
);
}
}
Dadurch habe ich es geschafft, dass ich nur noch einen Block in meinem Dist-Ordner erstellen brauche und alles andere wird vollautomatisch in WordPress rein geladen.
Ich hoffe, dass diese Tipps euch geholfen haben. Ich habe echt lange suchen müssen und wollte deswegen dieses Wissen mit euch teilen.