web-dev-qa-db-fra.com

Problème d'utilisation de is_single () pour mettre en file d'attente le script à partir de functions.php

Je ne parviens pas à ajouter des scripts à des pages de publication unique. J'ai besoin d'inclure et d'exclure certains scripts à l'aide de is_single (), mais cela ne fonctionne pas de toute façon, je l'essaie.

J'ai l'étiquette de modèle en haut des modèles personnalisés de publication unique ...

<?php /* Template Name: Single Default */ ?>

Et j'utilise cela pour appeler un script depuis le functions.php

if (!is_admin()) {
 if (is_single()) {
    wp_register_script( 'jquery-scroll', get_bloginfo('stylesheet_directory').'/libs/jquery.jscrollpane.min.js' );
wp_enqueue_script( 'jquery-scroll' );
 }
}
2
Pollux Khafra

Cela pourrait être l'un des quelques problèmes différents.

1. Mauvais crochet/pas accroché

Vous devez vous assurer que wp_enqueue_script est relié à wp_enqueue_scripts. Sinon, l'appel peut être déclenché trop tard ou (éventuellement dans ce cas?) Trop tôt?

Essayez ceci (aussi avec votre php nettoyé un peu:

function wpse53364() {
    if( !is_admin() && is_single() ) {
        wp_register_script( 'jquery-scroll', get_bloginfo('stylesheet_directory').'/libs/jquery.jscrollpane.min.js' );
        wp_enqueue_script( 'jquery-scroll' );
    }
}
add_action( 'wp_enqueue_scripts', 'wpse53364' );

2. Utilisation incorrecte du modèle

Votre question ne dit pas clairement, mais si vous utilisez single.php pour votre "modèle de message individuel personnalisé", vous ne devriez pas utiliser cet en-tête "Nom du modèle: ...". WordPress template hierarchy saura automatiquement quel fichier utiliser.

3. Mauvaise étiquette conditionnelle

Le fait que vous utilisiez un modèle de page personnalisé me fait me demander si vous essayez d'utiliser ce script pour le mettre en file d'attente sur PAGES plutôt que sur POSTS. Si tel est le cas, vous devez remplacer is_single() par is_page() ou is_singular( 'page' )

8
mrwweb