wp enqueue style pe template-uri specifice de pagini

8 aug. 2012, 22:20:46
Vizualizări: 74.9K
Voturi: 37

Sunt în procesul de dezvoltare a unei teme și aș dori să adaug landing page-uri folosind template-uri de pagină. Nu pot găsi nicăieri cum să încarc stiluri sau JavaScript pentru template-uri specifice de pagină. Aveți sugestii? Ex. Landing Page 1 - landing-page-template-one.php va avea nevoie de stiluri și JavaScript foarte diferite față de blog sau pagina principală.

function enqueue_template_specific_assets() {
    // Verifică dacă pagina curentă folosește un anumit template
    if (is_page_template('landing-page-template-one.php')) {
        // Încarcă stiluri specifice pentru acest template
        wp_enqueue_style('landing-one-style', get_template_directory_uri() . '/css/landing-one.css');
        // Încarcă JavaScript specific pentru acest template
        wp_enqueue_script('landing-one-script', get_template_directory_uri() . '/js/landing-one.js');
    }
}
add_action('wp_enqueue_scripts', 'enqueue_template_specific_assets');
0
Toate răspunsurile la întrebare 8
0
40

Dacă intenționați să faceți multă dezvoltare WordPress, ar trebui să marcați această pagină: http://codex.wordpress.org/Conditional_Tags

Cealaltă soluție funcționează, dar condiționalul se bazează pe faptul că slug-ul paginii (myurl.com/acesta-este-slug-ul) nu se va schimba niciodată. O metodă mai fiabilă (după părerea mea) și care se potrivește în acest caz, ar fi să utilizați verificarea condițională is_page_template('example-template.php') în schimb.

9 aug. 2012 00:01:09
3
30

Puteți utiliza condiția is_page( 'landing-page-template-one' ) în jurul stilurilor / scripturilor specifice paginii ca parte a declarațiilor voastre generale de încărcare.

function my_enqueue_stuff() {
  if ( is_page( 'landing-page-template-one' ) ) {
    /** Apelarea încărcării pentru landing-page-template-one */
  } else {
    /** Apelarea încărcării normale */
  }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );

Puteți chiar să adăugați mai multe condiții elseif în exemplul de mai sus pentru alte pagini, etc.

Referință: Referință Funcții - is_page()

8 aug. 2012 22:34:39
Comentarii

Cu plăcere, Sean, mă bucur că am putut ajuta.

Edward Caissie Edward Caissie
15 aug. 2012 22:27:16

Cred că folosirea is_page_template() este de preferat, deoarece slug-ul paginii poate fi ușor schimbat. Această soluție, deși funcționează bine, s-ar strica dacă slug-ul ar fi modificat. Consultați soluția lui kchjr dacă cineva întâmpină probleme în viitor.

BODA82 BODA82
15 nov. 2015 00:46:53

Mulțumesc! Pentru alții care au dat peste asta: condiția is_page trebuie să fie în funcția atașată acțiunii și nu să încadreze declarația add_action în sine. Dacă încadrați declarația add_action într-o condiție, va fi prea devreme în procesarea paginii pentru a ști despre ce pagină este vorba.

Hendeca Hendeca
25 mai 2016 06:32:18
1

Dacă șablonul de pagină se află într-un subdirector al temei (începând cu WP 3.4), adaugă numele folderului și o bară oblică înaintea numelui fișierului șablon, de exemplu:

is_page_template( 'templates/about.php' );

Deci, întreaga funcție ar arăta astfel:

function my_enqueue_stuff() {
  if ( is_page_template( 'landing-page-template-one' ) ) {
    /** Apelare încărcare resurse pentru landing-page-template-one */
  } else {
    /** Apelare încărcare resurse standard */
  }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );

Referință: Documentația Oficială

21 oct. 2018 07:58:20
Comentarii

Mulțumesc că ai menționat că verificarea is_page_template () ar trebui să fie în interiorul funcției enqueue, și nu în jurul ei.

gregn3 gregn3
1 iul. 2019 21:48:16
2

Nu știu dacă soluțiile furnizate în alte răspunsuri au funcționat, dar (deoarece nu există un răspuns acceptat!) se pare că răspunsul corect este în prezent:

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() funcționează doar în afara loop-ului, conform https://developer.wordpress.org/reference/functions/is_page_template/.

22 dec. 2016 15:08:15
Comentarii

conform documentației menționate, nu poate fi folosit în interiorul loop-ului

Selrond Selrond
20 feb. 2017 15:02:03

în afara loop-ului. asta am spus... roșu în obraji

richplane richplane
21 feb. 2017 15:58:56
0

Dacă numele șablonului tău este temper și vrei să încarci bootstrap pe acea pagină, poți încărca stilurile specifice pentru anumite șabloane de pagini astfel:

Accesează fișierul function.php și verifică condiția în felul următor:

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');
22 mai 2019 13:40:13
0

Acesta funcționează perfect.

      function my_enqueue_stuff() {

 // "page-templates/about.php" reprezintă calea către fișierul template. Dacă fișierul template se află în folderul rădăcină al temei, atunci folosește "about.php".

        if(is_page_template( 'page-templates/about.php' ))
        {
            wp_enqueue_script( 'lightgallery-js', get_template_directory_uri() . '/js/lightgallery-all.min.js');
            wp_enqueue_script('raventours-picturefill', "https://cdn.jsdelivr.net/picturefill/2.3.1/picturefill.min.js", true, null);
        }
        }
        add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );
14 feb. 2020 08:05:22
0

Încearcă asta

 if(is_page_template(array( 'custom-template/about.php') )) 
    {            
        wp_enqueue_style('about-css', get_template_directory_uri() . '/assets/css/about.css', array(), time(), 'all');
    } 
26 apr. 2022 08:27:10
0
function enqueue_my_script() {
    if ( is_page_template( 'my-page-template.php' ) ) {
        wp_enqueue_script( 'my-script', get_template_directory_uri() . '/js/my-script.js', array( 'jquery' ), '1.0', true );
    }
}
add_action( 'wp_enqueue_scripts', 'enqueue_my_script' );

În acest exemplu, funcția enqueue_my_script este conectată la acțiunea wp_enqueue_scripts, care este apelată de WordPress când încarcă scripturile și fișierele de stil.

Funcția utilizează funcția is_page_template pentru a verifica dacă pagina curentă utilizează un șablon de pagină specific (în acest caz, 'my-page-template.php'). Dacă condiția este adevărată, funcția wp_enqueue_script este apelată pentru a încărca scriptul 'my-script'.

Funcția wp_enqueue_script acceptă următoarele argumente:

'my-script': Acesta este identificatorul unic pentru script, folosit pentru a face referire la script atunci când este înregistrat.

get_template_directory_uri() . '/js/my-script.js': Aceasta este URL-ul fișierului JavaScript.

array( 'jquery' ): Aceasta specifică faptul că scriptul depinde de scriptul jquery, ceea ce înseamnă că ar trebui să fie încărcat după scriptul jquery.

'1.0': Acesta este numărul de versiune al scriptului.

true: Aceasta specifică faptul că scriptul ar trebui să fie încărcat în subsolul documentului HTML.

Puteți utiliza și alte tag-uri condiționale, cum ar fi is_home, is_front_page, is_single și `


8 ian. 2023 09:08:05