it-swarm.asia

PHP’deki tema URL’sini nasıl alabilirim?

Temanın resim/başlık dizinindeki bir resme başvuruda bulunmak için tema dizininin URL’sini almam gerekiyor. PHP'de bu nasıl yapılır?

38
Michael Crenshaw

Bu işlev return tema dizini URL'sini diğer işlevlerde kullanabilmeniz için:

get_bloginfo('template_directory');

Alternatif olarak, bu işlev tarayıcıdaki echo tema dizini URL'sini de gösterir:

bloginfo('template_directory');

Yani temalar images/headers klasöründeki resim için bir örnek:

<img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" />
45
EAMann

Ne @EAManndedi, bir ihtar ile. Eric, genel yaklaşım ve bloginfo() ve get_bloginfo() işlevlerinin nasıl çalıştığı ve (en) temalar için ihtiyacınız olan değeri elde etmek için 'template_directory' parametresinin nasıl geçirileceği konusunda haklıdır.

Bununla birlikte, bir ihtar var ve ihtar daha yeni Çocuk Temaları ile yapıldı. Eğer bir çocuk teması kullanıyorsanız, 'template_directory' muhtemelen istemediğiniz bir şey değildir. Üst tema dizininde yer alan bir resimdir. Bunun yerine, çocuk temaları için muhtemelen ne istediğinizi stylesheet_directory 'u geçmektir (Biliyorum, biliyorum, isimler size ne olduklarını söylemezler ama hey, tam olarak budur!) Eric'in cevabını stylesheet_directory kullanarak ödünç almak bir şekilde şöyle olurdu (Örneği kısalttım, böylece sarmayacaktım):

<img src="<?php bloginfo('stylesheet_directory'); ?>/images/header.jpg" />

Noktayı göstermek için hızlı ve bağımsız bir dosya yazdım, web sitenizin kök dizinine test.php olarak bırakabilir ve neyin çıktı verdiğini görmek için koşabilirsiniz. Önce TwentyTen gibi normal bir temayla koşun, sonra bir çocuk temayla koşun:

<?php
/*
* test.php - Test the difference between Regular and Child Themes
*
*/

include "wp-load.php";

$bloginfo_params = array(
    'admin_email',
    'atom_url',
    'charset',
    'comments_atom_url',
    'comments_rss2_url',
    'description',
    'home',
    'html_type',
    'language',
    'name',
    'pingback_url',
    'rdf_url',
    'rss2_url',
    'rss_url',
    'siteurl',
    'stylesheet_directory',
    'stylesheet_url',
    'template_directory',
    'template_url',
    'text_direction',
    'url',
    'version',
    'wpurl',
);

echo '<table border="1">';
foreach($bloginfo_params as $param) {
    $info = get_bloginfo($param);
    echo "<tr><th>{$param}:</th><td>{$info}</td></tr>";
}
echo '</table>';

Bazı şeyleri fark ederseniz, bloginfo() ve get_bloginfo() öğelerine geçebileceklerinizden çok daha fazlası olduğunu fark edebilirsiniz; fikirler için aşağıdaki kodu ve aşağıdaki ekran görüntüsünü inceleyin.

Ekran görüntüsüne bakıldığında, stylesheet_directory öğesinin normal bir tema için 'template_directory' ile aynı şeyi, ancak farklı bir değer ve muhtemelen bir alt tema için ihtiyacınız olan değeri döndürdüğünü görebilirsiniz.

 The return values of get_bloginfo() with and without a Child Theme in WordPress 
(kaynak: mikeschinkel.com )

Bu ekran görüntüsünün netliği için, wp30.dev yalnızca yerel bilgisayarımda çalışan bir etki alanıdır. Şu anda bir WordPress 3.0.1 örneği ve dizüstü bilgisayarımda 127.0.0.1localhost ile aynı) olarak yapılandırılmış ve bunun gibi geçici örnekleri test etmek için kullanıyorum. VirtualHostX 'ı Mac OS X'te bu özel yönlendirilebilir olmayan .dev alan adlarını ayarlamama yardımcı olmak için kullanmam için bir kolaylık olarak kullandım, ancak herhangi biri bilgisayarın ana bilgisayar dosyasını ve? httpd.conf dosyası.

Bu arada, _ (Alt temalar ile aşina değilseniz, yardımcı olabilecek diğer iki WordPress Cevapları:

32
MikeSchinkel

Temanın tüm yapısı iki seçeneğin üzerine kuruludur - template (ana tema klasör adını tutan) ve stylesheet (holding çocuk teması klasör adını). Kullanılan çocuk teması yoksa bunlar aynıdır.

Filtrelerin esnekliğini sağlamak için doğrudan erişim seçeneğinden ziyade, buna göre get_template() ve get_stylesheet() vardır.

Şimdi eksik olan tek şey, bunları tema klasörü konumuyla birleştirmek. Bu, get_theme_root_uri() ile yapılabilir ve yine uygun bir şekilde get_template_directory_uri() ve get_stylesheet_directory_uri() içine sarılabilir.

[get_]bloginfo() , template_directory veya stylesheet_directory bağımsız değişkenleri ile yalnızca bunları sarar ve böyle kullanmak için çok az neden vardır. Sadece dizini (genellikle yerel yollarla ilgilidir) söyleyen bir argüman alarak kafa karıştırıcı olduğunu, ancak URL’leri döndürdüğünü söyleyebilirim.

Sumary:

  • only veya parent theme öğesine başvurmak için get_template_directory_uri() öğesini kullanın.
  • get_stylesheet_directory_uri() işlevini yalnızca veya çocuk tema
12
Rarst