web-dev-qa-db-fra.com

Charger le script JS uniquement pour les types de publication personnalisés

J'utilise ce code et je ne sais pas pourquoi le script n'est pas chargé. Je crois que la syntaxe est correcte, car j'essaie de charger le script uniquement sur le type de message personnalisé "événements".

add_action( 'login_enqueue_scripts', 'wpse_login_enqueue_scripts', 10 );
function wpse_login_enqueue_scripts() {
    if( is_single() && get_post_type()=='events' ){
    wp_enqueue_script( 'bootstrap', 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js', array('jquery'), '3.3.5', true );
}
}
1
Joanna Mikalai

Pour mettre en file d'attente des scripts sur le serveur frontal, le raccordement doit être wp_enqueue_scripts et non login_enqueue_scripts.

En outre, un meilleur moyen de savoir si vous utilisez un seul type de publication personnalisé consiste à utiliser is_singular() et de transmettre le type de publication que vous souhaitez vérifier:

if ( is_singular( 'events' ) ) {
}

get_post_type() s'appuie sur l'objet $post global et non sur la requête principale. Ils sont souvent identiques, mais dans certaines circonstances, l’objet $post peut ne pas être identique à la publication actuelle.

1
Jacob Peattie

ce hook n'est activé que sur la page de connexion:
https://developer.wordpress.org/reference/hooks/login_enqueue_scripts/

à utiliser sur une page de publication personnalisée, utilisez l'action wp_enqueue_scripts.

0
Kaperto

Vous raccordez cette fonction à 'login_enqueue_scripts' (qui ne fonctionne que sur la page de connexion); vous devriez le raccrocher à 'wp_enqueue_scripts' à la place.

( is_single() && get_post_type()=='events' ) fonctionnerait également, mais comme l'a souligné Jacob Peattie dans une autre réponse, is_singular( 'events' ) est le meilleur moyen de rechercher un message personnalisé de type message personnalisé.

Enfin, vous devez renommer la fonction wpse_login_enqueue_scripts() en wpse_events_enqueue_scripts() afin de la rendre plus descriptive et moins déroutante:

add_action( 'wp_enqueue_scripts', 'wpse_events_enqueue_scripts', 10 );
function wpse_events_enqueue_scripts() {
    if ( is_single() && 'events' == get_post_type() ) {
        wp_enqueue_script( 'bootstrap', 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js', array('jquery'), '3.3.5', true );
    }
}
0
Iceable