Belirli sayfa şablonlarında wp enqueue stili


24

Bir tema sürecindeyim, sayfa şablonlarını kullanarak açılış sayfaları eklemek istiyorum. Belirli sayfa şablonları için stil veya js'yi nasıl kodlayacağınızı gösteren hiçbir yeri bulamıyorum. Baska öneri. Ör. Açılış Sayfası 1 - açılış sayfası-şablon-one.php, blog veya ana sayfadan çok farklı stil ve j'lere ihtiyaç duyacaktır.

Yanıtlar:


29

Çok fazla WP geliştirme yapmayı planlıyorsanız, bu sayfayı işaretlemelisiniz: http://codex.wordpress.org/Conditional_Tags

Diğer cevap işe yarıyor ancak şartlı, sayfanızdaki ipucuna (myurl.com/this-is-the-slug) asla değişmeyecek şekilde güveniyor. Daha güvenilir bir yöntem (IMO) ve bu duruma uyan bir yöntem is_page_template('example-template.php')yerine koşullu denetimi kullanmak olacaktır.


22

Sen kullanabilirsiniz is_page( 'landing-page-template-one' )aşırı tüm enqueue tabloların bir parçası olarak sayfaya özel stilleri / komut etrafında şartlı.

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' );

elseifDiğer sayfalar, vb. İçin yukarıdakilere daha çok zincir ekleyebilirsin

Referans: İşlevler Referansı -is_page()


Bir şey değil Sean, yardım etmekten mutluluk duyarım.
Edward Caissie

2
Ben is_page_template()sayfa sümüklü böcek kolayca değiştiği için kullanılması tercih edilir. Bu çözüm, iyi çalışsa da, sümüklü böcek değiştirildiyse kırılır. Gelecekte herhangi bir problemle karşılaşırsanız kchjr'in çözümüne bakınız.
BODA82

Teşekkür ederim! Buna tökezleyen diğerleri için: koşullu ifade is_page, eyleme eklenmiş ve add_actionifadenin kendisini sarmayacak fonksiyonda olmalıdır . İfadeyi add_actionkoşullu olarak kaydırırsanız, hangi sayfanın olduğunu bilmek sayfanın işlenmesinde erken olacaktır.
Hendeca

2

Sayfa şablonu temanın bir alt dizininde bulunuyorsa (WP 3.4'ten beri), klasör adını ve şablon dosya adına bir eğik çizgi hazırlayın, örneğin:

is_page_template( 'templates/about.php' );

Yani, tüm fonksiyon şöyle görünür:

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' );

Referans: Resmi Belgeler


is_page_template ()Kontrolün etrafta değil enqueue işlevinin içinde olması gerektiğini belirttiğiniz için teşekkür ederiz .
gregn3

1

Diğer cevaplarda verilen çözümler işe yarar mıydı bilmiyorum ama (kabul edilen bir cevap olmadığı için!) Doğru cevap şu anda:

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 (), https://developer.wordpress.org/reference/functions/is_page_template/ 'e göre sadece döngünün dışında çalışır .


Söz konusu belgelere göre , döngü içinde kullanılamaz
Selrond

döngü dışında . Ben de öyle dedim ... * allık *
richplane

1

Şablon adınızın temperli olduğunu ve bu sayfaya önyükleme yapmak istediğinizi ve böylece aşağıdaki gibi belirli sayfa şablonlarında stili sıkıştırabileceğinizi söyleyin:

function.php dosyasına gidin ve aşağıdaki gibi durumu kontrol edin:

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');
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.