web-dev-qa-db-fra.com

wp met en file d'attente le style sur des modèles de page spécifiques

Je suis en train de créer un thème, j'aimerais ajouter des pages de destination à l'aide de modèles de page. Je ne trouve aucun endroit qui montre comment mettre en file d'attente un style ou un js pour des modèles de page spécifiques. Aucune suggestion. Ex. Landing Page 1 - landing-page-template-one.php aura besoin d'un style et d'un js très différents de ceux du blog ou de la page d'accueil.

23
Sean

Si vous envisagez de faire beaucoup de développement WP, vous devez ajouter cette page à vos favoris: http://codex.wordpress.org/Conditional_Tags

L'autre réponse fonctionne, mais le conditionnel repose sur votre slug de page (myurl.com/this-is-the-slug) qui ne change jamais. Une méthode plus fiable (IMO), qui correspond à ce cas, serait d'utiliser plutôt la vérification conditionnelle is_page_template('example-template.php').

27
kchjr

Vous pouvez utiliser la condition is_page( 'landing-page-template-one' ) autour de vos styles/scripts spécifiques à une page dans le cadre de vos instructions de mise en file d'attente globale.

function my_enqueue_stuff() {
  if ( is_page( 'landing-page-template-one' ) ) {
    /** Call landing-page-template-one enqueue */
  } else {
    /** Call regular enqueue */
  }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );

Vous pouvez même enchaîner plus elseif dans ce qui précède pour d'autres pages, etc.

Référence: Référence des fonctions - is_page()

22
Edward Caissie

Si le modèle de page se trouve dans un sous-répertoire du thème (puisque WP 3.4), ajoutez le nom du dossier et une barre oblique au nom du fichier, par exemple:

is_page_template( 'templates/about.php' );

Donc, toute la fonction ressemble à:

function my_enqueue_stuff() {
  if ( is_page_template( 'landing-page-template-one' ) ) {
    /** Call landing-page-template-one enqueue */
  } else {
    /** Call regular enqueue */
  }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );

Référence: Documentations officielles

1
Razon K.

Supposons que le nom de votre modèle est temper- et que vous souhaitez charger l'amorçage sur cette page afin de pouvoir mettre en file d'attente le style de modèles de page spécifiques, comme ceci:

allez dans function.php fichier puis vérifiez la condition comme ceci:

function temper_scripts() {

    if(basename(get_page_template()) == 'temper.php'){

       wp_enqueue_style('bootstrap', '//stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css');

    }

}

add_action('wp_enqueue_scripts', 'temper_scripts');
0
Touhid Imam

Je ne sais pas si les solutions fournies dans d'autres réponses fonctionnaient auparavant, mais (vu qu'il n'y a pas de réponse acceptée!), Il semble que la bonne réponse est actuellement:

function my_enqueue_stuff() {
    if ( get_page_template_slug() == 'landing-page-template-one.php' ) {
        wp_enqueue_script('my-script-handle', 'script-path.js', ... );
    }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );

is_page_template () ne fonctionne qu'en dehors de la boucle, selon https://developer.wordpress.org/reference/functions/is_page_template/ .

0
richplane