ฉันต้องได้รับ URL ของไดเรกทอรีชุดรูปแบบของฉันเพื่ออ้างอิงรูปภาพในไดเรกทอรีรูปภาพ / ส่วนหัวของชุดรูปแบบ สิ่งนี้ทำใน PHP ได้อย่างไร?
ฉันต้องได้รับ URL ของไดเรกทอรีชุดรูปแบบของฉันเพื่ออ้างอิงรูปภาพในไดเรกทอรีรูปภาพ / ส่วนหัวของชุดรูปแบบ สิ่งนี้ทำใน PHP ได้อย่างไร?
คำตอบ:
ฟังก์ชั่นนี้จะคืนค่า URL ไดเรกทอรีธีมเพื่อให้คุณสามารถใช้ในฟังก์ชั่นอื่น ๆ :
get_bloginfo('template_directory');
ฟังก์ชั่นนี้จะสะท้อน URL ไดเรกทอรีธีมไปยังเบราว์เซอร์:
bloginfo('template_directory');
ดังนั้นตัวอย่างสำหรับรูปภาพในimages/headers
โฟลเดอร์ชุดรูปแบบจะเป็น:
<img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" />
get_template_directory_uri()
สิ่งที่@Eannannพูดพร้อมกับข้อแม้ Eric ถูกต้องเกี่ยวกับวิธีการทั่วไปและวิธีการทำงานbloginfo()
และการget_bloginfo()
ทำงานและเกี่ยวกับวิธีส่งพารามิเตอร์'template_directory'
เพื่อรับค่าที่คุณต้องการสำหรับชุดรูปแบบ (ส่วนใหญ่)
แต่มีข้อแม้และข้อแม้อยู่กับใหม่ธีมส์เด็ก หากคุณกำลังใช้ชุดรูปแบบลูกก็'template_directory'
อาจไม่ใช่สิ่งที่คุณต้องการยกเว้นว่าคุณกำลังพยายามอ้างถึงรูปภาพที่อยู่ในไดเรกทอรีชุดรูปแบบหลัก สำหรับธีมเด็กสิ่งที่คุณอาจต้องการที่จะผ่านstylesheet_directory
(ฉันรู้ว่าฉันรู้ชื่อไม่ได้บอกคุณว่าพวกเขาเป็นอะไร แต่เฮ้นั่นเป็นวิธีที่มันเป็น!) ยืมมาจากคำตอบของ Eric ใช้stylesheet_directory
จะมีลักษณะเช่นนี้ ( ฉันย่อตัวอย่างเพื่อไม่ให้เป็นแผ่น):
<img src="<?php bloginfo('stylesheet_directory'); ?>/images/header.jpg" />
เพื่อแสดงให้เห็นถึงจุดที่ฉันเขียนไฟล์แบบสแตนด์อโลนอย่างรวดเร็วคุณสามารถวางลงในรูทของเว็บไซต์ของคุณtest.php
และเรียกใช้เพื่อดูสิ่งที่มันส่งออก เรียกใช้ครั้งแรกด้วยชุดรูปแบบปกติเช่น TwentyTen จากนั้นเรียกใช้ด้วยชุดรูปแบบลูก:
<?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>';
หากคุณสังเกตเห็นสิ่งต่าง ๆ คุณอาจสังเกตเห็นว่ามีอะไรมากมายที่คุณสามารถส่งผ่านไปbloginfo()
และget_bloginfo()
; ศึกษารหัสและภาพหน้าจอด้านล่างเพื่อหาแนวคิด
เมื่อดูที่หน้าจอคุณจะเห็นว่าstylesheet_directory
ผลตอบแทนนั้นเหมือนกับ 'template_directory'
ชุดรูปแบบปกติ แต่มีค่าต่างกันและอาจเป็นค่าที่คุณต้องการสำหรับชุดรูปแบบลูก
(ที่มา: mikeschinkel.com )
เพื่อความชัดเจนของภาพหน้าจอ
wp30.dev
นี้เป็นโดเมนที่ทำงานบนเครื่องคอมพิวเตอร์ของฉันเท่านั้น ปัจจุบันเป็นอินสแตนซ์ของ WordPress 3.0.1 และมีการกำหนดค่าที่127.0.0.1
(เหมือนlocalhost
) บนแล็ปท็อปของฉันและฉันใช้สำหรับทดสอบตัวอย่างโฆษณาแบบนี้ ฉันใช้VirtualHostXเพื่อความสะดวกใน Mac OS X เพื่อช่วยฉันตั้งค่า.dev
โดเมนที่ไม่สามารถกำหนดเส้นทางส่วนบุคคลเหล่านั้นได้แต่ใคร ๆ ก็สามารถทำได้ด้วยตนเองโดยแก้ไขไฟล์โฮสต์ของคอมพิวเตอร์และ? ไฟล์ httpd.conf
ในกรณีที่คุณไม่คุ้นเคยกับChild Themesซึ่งเป็นอีกสองเวิร์ดเพรสเวิร์ดที่อาจช่วย:
get_stylesheet_directory_uri()
ผมมักจะใช้ ฉันควรจะใช้ ol ol 'ธรรมดาget_stylesheet_directory()
หรือไม่?
โครงสร้างทั้งหมดของชุดรูปแบบสร้างอยู่ด้านบนของสองตัวเลือก - template
(ถือโฟลเดอร์ธีมหลัก) และstylesheet
(ถือโฟลเดอร์ธีมลูก) หากไม่มีธีมลูกใช้สิ่งเหล่านี้เหมือนกัน
ที่จะมีความยืดหยุ่นของฟิลเตอร์มากกว่าตัวเลือกการเข้าถึงโดยตรงมีความนับถือและget_template()
get_stylesheet()
ตอนนี้สิ่งเดียวที่ขาดหายไปคือการรวมสิ่งเหล่านั้นเข้ากับที่ตั้งโฟลเดอร์ของชุดรูปแบบ ซึ่งสามารถทำได้ด้วยget_theme_root_uri()
และอีกครั้งห่อในทำเลที่สะดวกและget_template_directory_uri()
get_stylesheet_directory_uri()
[get_]bloginfo()
ด้วยtemplate_directory
หรือstylesheet_directory
ขัดแย้งแค่ล้อมสิ่งเหล่านี้และมีเหตุผลน้อยที่จะใช้มันเช่นนั้น ฉันจะบอกว่ามันเป็นเพียงความสับสนโดยมีข้อโต้แย้งว่าไดเรกทอรี (โดยทั่วไปเกี่ยวข้องกับเส้นทางท้องถิ่น) แต่กลับ URL
Sumary:
get_template_directory_uri()
เพื่ออ้างถึงธีมหลักเท่านั้นหรือget_stylesheet_directory_uri()
ไปเท่านั้นหรือเด็กธีมฉันใช้สิ่งนี้
(dirname(get_bloginfo('stylesheet_url')))