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

24

Je suis en train de créer un thème, je voudrais ajouter des pages de destination en utilisant des modèles de page. Je ne trouve aucun endroit qui montre comment mettre en file d'attente le style ou 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.

Sean
la source

Réponses:

29

Si vous prévoyez de faire beaucoup de développement WP, vous devez mettre cette page en signet: http://codex.wordpress.org/Conditional_Tags

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

kchjr
la source
23

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

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 elseifdans ce qui précède pour d'autres pages, etc.

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

Edward Caissie
la source
Vous êtes le bienvenu Sean, heureux de vous aider.
Edward Caissie
2
Je pense que l'utilisation is_page_template()est préférable car le slug de page est facilement changé. Cette solution, même si elle fonctionne bien, se briserait si le slug était changé. Voir la solution de kchjr si quelqu'un rencontre des problèmes à l'avenir.
BODA82
Merci! Pour ceux qui sont tombés sur ce point: l'instruction conditionnelle is_pagedoit être dans la fonction attachée à l'action et non encapsuler l' add_actioninstruction elle-même. Si vous encapsulez l' add_actioninstruction au conditionnel, ce sera trop tôt dans le traitement de la page pour savoir de quelle page il s'agit.
Hendeca
2

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

is_page_template( 'templates/about.php' );

Ainsi, 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

Razon K.
la source
Merci d'avoir mentionné que le is_page_template ()chèque devrait être à l'intérieur de la fonction de mise en file d'attente, et non pas autour d'elle.
gregn3
1

Je ne sais pas si les solutions fournies dans d'autres réponses fonctionnaient, mais (puisqu'il n'y a pas de réponse acceptée!), Il semble que la bonne réponse soit 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/ .

richplane
la source
selon les documents mentionnés, il ne peut pas être utilisé à l'intérieur de la boucle
Selrond
en dehors de la boucle. c'est ce que j'ai dit ... * blush *
richplane
1

Supposons que le nom de votre modèle soit tempéré et que vous souhaitiez charger le bootstrap sur cette page afin de pouvoir mettre en file d'attente le style sur des modèles de page spécifiques comme celui-ci:

allez dans le fichier function.php 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');
Touhid Imam
la source