it-swarm-id.com

Bagaimana cara mendapatkan URL tema dalam PHP?

Saya perlu mendapatkan URL direktori tema saya untuk referensi gambar di direktori gambar/header tema. Bagaimana ini dilakukan dalam PHP?

38
Michael Crenshaw

Fungsi ini akan mengembalikan URL direktori tema sehingga Anda dapat menggunakannya di fungsi lain:

get_bloginfo('template_directory');

Atau, fungsi ini akan echo URL direktori tema ke browser:

bloginfo('template_directory');

Jadi contoh untuk gambar dalam folder tema images/headers adalah:

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

Apa kata @EAMann, dengan peringatan. Eric benar tentang pendekatan umum dan bagaimana fungsi bloginfo() dan get_bloginfo() bekerja dan tentang cara meneruskan parameter 'template_directory' untuk mendapatkan nilai yang Anda perlukan untuk sebagian besar tema.

Namun ada peringatan dan bahwa peringatan adalah dengan yang lebih baruTema Anak. Jika Anda menggunakan tema anak maka 'template_directory' mungkin bukan yang Anda inginkan kecuali Anda benar-benar mencoba merujuk ke gambar yang ada di direktori tema induk. Alih-alih untuk tema anak-anak, apa yang mungkin Anda inginkan adalah melewati stylesheet_directory (saya tahu, saya tahu, nama-nama itu tidak memberi tahu Anda apa itu tapi hei, begitulah adanya!) Meminjam sedikit dari jawaban Eric menggunakan stylesheet_directory akan terlihat seperti ini (saya menyingkat contoh sehingga tidak akan membungkus):

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

Untuk mengilustrasikan poin saya menulis file mandiri cepat, Anda dapat memasukkan root situs web Anda sebagai test.php dan menjalankan untuk melihat apa yang dihasilkannya. Jalankan pertama dengan tema biasa seperti TwentyTen kemudian jalankan dengan tema anak:

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

Jika Anda memperhatikan hal-hal yang mungkin Anda perhatikan ada banyak hal yang dapat Anda sampaikan ke bloginfo() dan get_bloginfo(); pelajari kode dan tangkapan layar di bawah untuk ide-ide.

Melihat tangkapan layar Anda dapat melihat bahwa stylesheet_directory mengembalikan hal yang sama dengan 'template_directory' untuk tema reguler tetapi nilai yang berbeda, dan mungkin nilai yang Anda butuhkan untuk tema anak.

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

Untuk kejelasan tentang tangkapan layar ini, wp30.dev adalah domain yang hanya berjalan di komputer lokal saya. Saat ini merupakan instance dari WordPress 3.0.1 dan dikonfigurasi di 127.0.0.1 (sama dengan localhost) di laptop saya dan saya menggunakannya untuk menguji contoh ad-hoc seperti ini. Saya menggunakan VirtualHostX sebagai kenyamanan pada Mac OS X untuk membantu saya mengatur domain .dev pribadi yang tidak dapat dialihkan tetapi siapa pun dapat melakukannya secara manual dengan mengedit file host komputer dan file? File httpd.conf.

Omong-omong, jika Anda tidak terbiasa denganTema Anakdi mana dua Jawaban WordPress lain yang mungkin membantu:

32
MikeSchinkel

Seluruh struktur tema dibangun di atas dua opsi - template (memegang nama folder theme induk) dan stylesheet (memegang folder folder child childr). Jika tidak ada tema anak yang digunakan, ini adalah sama.

Untuk memiliki fleksibilitas filter, daripada opsi akses secara langsung, ada get_template() dan get_stylesheet() yang sesuai.

Sekarang satu-satunya hal yang hilang adalah menggabungkan mereka dengan lokasi folder tema. Ini dapat dilakukan dengan get_theme_root_uri() dan sekali lagi dibungkus dengan get_template_directory_uri() dan get_stylesheet_directory_uri() .

[get_]bloginfo() dengan argumen template_directory atau stylesheet_directory hanya membungkus ini dan ada sedikit alasan untuk menggunakannya seperti itu. Saya akan mengatakan itu hanya membingungkan dengan memiliki direktori argumen mengatakan (umumnya berkaitan dengan jalur lokal), tetapi mengembalikan URL.

Ringkasan:

  • gunakan get_template_directory_uri() untuk merujuk ke only atau parent theme
  • gunakan get_stylesheet_directory_uri() ke only atau child theme
12
Rarst