Saya perlu mendapatkan URL direktori tema saya untuk referensi gambar di direktori gambar / header tema. Bagaimana ini dilakukan dalam PHP?
Saya perlu mendapatkan URL direktori tema saya untuk referensi gambar di direktori gambar / header tema. Bagaimana ini dilakukan dalam PHP?
Jawaban:
Fungsi ini akan mengembalikan URL direktori tema sehingga Anda dapat menggunakannya di fungsi lain:
get_bloginfo('template_directory');
Atau, fungsi ini akan menggemakan URL direktori tema ke browser:
bloginfo('template_directory');
Jadi contoh untuk gambar di images/headers
folder tema adalah:
<img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" />
get_template_directory_uri()
Apa yang dikatakan @EAMann , dengan peringatan. Eric benar tentang pendekatan umum dan bagaimana fungsi bloginfo()
dan get_bloginfo()
kerjanya dan tentang cara melewatkan parameter 'template_directory'
untuk mendapatkan nilai yang Anda butuhkan untuk (sebagian besar) tema.
Namun ada peringatan dan peringatan itu dengan Tema Anak yang lebih baru . 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 untuk lulus stylesheet_directory
(saya tahu, saya tahu, nama 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 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 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 seperti 'template_directory'
untuk tema biasa tetapi nilai yang berbeda, dan mungkin nilai yang Anda butuhkan untuk tema anak.
(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 pada127.0.0.1
(sama denganlocalhost
) pada 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.dev
domain pribadi non-routable itu, tetapi siapa pun dapat melakukannya secara manual dengan mengedit file host komputer dan file? File httpd.conf.
Omong-omong, jika Anda tidak terbiasa dengan Tema Anak di mana ada dua Jawaban WordPress lain yang mungkin membantu:
get_stylesheet_directory_uri()
. Haruskah saya menggunakan ol biasa get_stylesheet_directory()
?
Seluruh struktur tema dibangun di atas dua opsi - template
(memegang nama folder tema induk) dan stylesheet
(memegang folder nama child child). Jika tidak ada tema anak yang digunakan, ini adalah sama.
Untuk memiliki fleksibilitas filter, daripada opsi akses secara langsung, ada sesuai get_template()
dan get_stylesheet()
.
Sekarang satu-satunya hal yang hilang adalah menggabungkan mereka dengan lokasi folder tema. Ini dapat dilakukan dengan get_theme_root_uri()
dan lagi dengan mudah dibungkus get_template_directory_uri()
dan get_stylesheet_directory_uri()
.
[get_]bloginfo()
dengan template_directory
atau stylesheet_directory
argumen 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:
get_template_directory_uri()
untuk merujuk hanya tema atau indukget_stylesheet_directory_uri()
untuk tema anak