Registrieren Sie ein Skript, das sowohl im Administrator- als auch im Front-End-Bereich in die Warteschlange gestellt werden soll


12

Soweit ich weiß, sollten Admin-Skripte registriert und über den admin_enqueue_scriptsHook in die Warteschlange gestellt werden , und alle anderen Skripte unter. wp_enqueue_scriptsDaher habe ich die folgenden Funktionen eingerichtet, um alle meine Skripte klar und organisiert zu registrieren und in die Warteschlange zu stellen.

Meine Frage ist, was ist, wenn ich bestimmte Skripte (zB jquery validate plugin) sowohl im Admin als auch im Frontend benötige ? Was ist die empfohlene Methode zum Registrieren und Einreihen des Skripts in diesem Fall? Registrieren Sie es zweimal mit einem anderen $ -Handle oder registrieren Sie es wp_enqueue_scriptsnur durch. Wenn ja, besteht dann nicht die Gefahr, dass es bei Bedarf nicht aufgerufen wird? (Ich meine, warum sollte es sonst noch geben admin_enqueue_scripts, wenn diese Skripte nicht zu einem früheren Zeitpunkt verfügbar wären ?

Ich würde mich sehr freuen, wenn mir jemand dies erklären würde, um die Nuancen des Einreihens von Skripten in wp vollständig zu verstehen. Vielen Dank

Mein Code:

// REGISTER ALL NON-ADMIN SCRIPTS
add_action( 'wp_enqueue_scripts', 'register_all_non_admin_scripts' );
function register_all_non_admin_scripts() {

wp_register_script( ... );
wp_register_script( ... );

}

// ENQUEUE NON-ADMIN SCRIPTS CONDITIONALLY
add_action( 'wp_enqueue_scripts', 'enqueue_scripts_where_required' );
function enqueue_scripts_where_required() {

// scripts to be loaded at all times
wp_enqueue_script( '' );

// scripts to be loaded conditionaly
if( is_page( '' ) ) {
    wp_enqueue_style( '' );
}
}

// REGISTER ALL ADMIN SCRIPTS
add_action( 'admin_enqueue_scripts', 'register_all_admin_scripts' );
function register_all_admin_scripts(){
wp_register_script( ... );
wp_register_script( ... );
}

// ENQUEUE ADMIN SCRIPTS
add_action( 'admin_enqueue_scripts', 'enqueue_admin_contact_cpt_js' );
function enqueue_admin_contact_cpt_js(){

global $post_type;

// scripts to be loaded at all times
wp_enqueue_script( '' );

// scripts to be loaded conditionaly by post type
if( 'contact' == $post_type ){
    wp_enqueue_script( '' );
    ...
}
}

Antworten:


10

Sie können die Skripte früher registrieren , zum Beispiel auf wp_loaded:

add_action( 'wp_loaded', 'register_all_scripts' );

function register_all_scripts() 
{
    wp_register_script(...);
}

Und dann stellen Sie die Skripte in eine Warteschlange, wann immer Sie sie benötigen:

add_action( 'wp_enqueue_scripts', 'enqueue_front_scripts' );
add_action( 'admin_enqueue_scripts', 'enqueue_back_scripts' );

Verwenden Sie dieselben Handles und Namen, um Kollisionen mit anderen Skripten zu vermeiden.


Ich denke, das würde das Problem lösen, wenn die Skripte sowohl im Admin- als auch im Front-End-Bereich verwendet würden. Ich werde eine weitere Funktion für diese Fälle hinzufügen. danke @toscho
Ronnieinspain
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.