it-swarm.com.de

Wie kann ich jedes Skript in einem Ordner automatisch in die Warteschlange stellen?

Ich habe einen ganzen Ordner js mit Skripten und es wäre mühsam, sie alle nacheinander mit wp_enqueue_script() zu laden.

Kann ich das Verzeichnis, in dem sie sich befinden, einfach so einfügen, dass es für mich funktioniert?

2
Lewis

Es ist nichts Falsches daran, mit wp_enqueue_script viele Dateien in die Warteschlange zu stellen. Wenn Sie es als frustrierend bezeichnen, gibt es dafür eine einfache Lösung.

PHP bietet eine Funktion, die Dateien und Verzeichnisse auflisten kann. Mit glob können Sie jede .js -Datei in Ihrem Verzeichnis auflisten und sie dann in eine Schleife einreihen.

function enqueue_my_scripts(){
    foreach( glob( get_template_directory(). '/path/*.js' ) as $file ) {
        // $file contains the name and extension of the file
        wp_enqueue_script( $file, get_template_directory_uri().'/path/'.$file);
    }
}
add_action('wp_enqueue_scripts', 'enqueue_my_scripts');

Eine Seite ist nicht, dass glob den relativen Pfad verwendet, aber wp_enqueue_script verwendet URLs. Aus diesem Grund habe ich verschiedene Funktionen verwendet, um den Pfad und die URI des Ordners abzurufen.

7
Jack Johansson

Unter WordPress 4.9 wurde unter Verwendung des relativen Pfads (get_template_directory) $ file als vollständiger Pfad zurückgegeben, der auf einem freigegebenen Server nicht verwendet werden kann. Ich stellte fest, dass ich die substr-Funktion verwenden musste, um nur den Dateinamen zurückzugeben und dann den URI daraus zu erstellen.

foreach( glob( get_template_directory(). '/path/*.js' ) as $file ) {
    $filename = substr($file, strrpos($file, '/') + 1);
   wp_enqueue_script( $filename, get_template_directory_uri().'/path/'.$filename);
}
1
pixelslave