Tôi cần lấy URL của thư mục chủ đề của mình để tham chiếu một hình ảnh trong thư mục hình ảnh / tiêu đề của chủ đề. Làm thế nào điều này được thực hiện trong PHP?
Tôi cần lấy URL của thư mục chủ đề của mình để tham chiếu một hình ảnh trong thư mục hình ảnh / tiêu đề của chủ đề. Làm thế nào điều này được thực hiện trong PHP?
Câu trả lời:
Hàm này sẽ trả về URL thư mục chủ đề để bạn có thể sử dụng nó trong các chức năng khác:
get_bloginfo('template_directory');
Ngoài ra, chức năng này sẽ lặp lại URL thư mục chủ đề cho trình duyệt:
bloginfo('template_directory');
Vì vậy, một ví dụ cho một hình ảnh trong images/headers
thư mục chủ đề sẽ là:
<img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" />
get_template_directory_uri()
Những gì @EAMann nói, với một lời cảnh báo. Eric nói đúng về cách tiếp cận chung và cách các chức năng bloginfo()
và get_bloginfo()
hoạt động cũng như về cách vượt qua tham số 'template_directory'
để có được giá trị bạn cần cho (hầu hết) các chủ đề.
Tuy nhiên, có một cảnh báo và cảnh báo đó là với Chủ đề trẻ em mới hơn . Nếu bạn đang sử dụng một chủ đề con thì 'template_directory'
có lẽ không phải là điều bạn muốn trừ khi bạn thực sự đang cố gắng tham khảo một hình ảnh trong thư mục chủ đề gốc. Thay vào đó, đối với các chủ đề trẻ em, những gì bạn có thể muốn vượt qua stylesheet_directory
(tôi biết, tôi biết, những cái tên không cho bạn biết chúng là gì nhưng này, đó chỉ là như vậy!) Mượn phần nào từ câu trả lời của Eric stylesheet_directory
sẽ giống như thế này ( Tôi rút ngắn ví dụ để nó không bao bọc):
<img src="<?php bloginfo('stylesheet_directory'); ?>/images/header.jpg" />
Để minh họa điểm tôi đã viết một tệp độc lập nhanh, bạn có thể thả vào thư mục gốc của trang web test.php
và chạy để xem nội dung đầu ra. Lần đầu tiên chạy với một chủ đề thông thường như TwentyTen sau đó chạy với một chủ đề con:
<?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>';
Nếu bạn nhận thấy những điều bạn có thể nhận thấy rằng có nhiều hơn những gì bạn có thể vượt qua bloginfo()
và get_bloginfo()
; nghiên cứu mã và ảnh chụp màn hình dưới đây để biết ý tưởng.
Nhìn vào ảnh chụp màn hình, bạn có thể thấy điều đó stylesheet_directory
trả về điều tương tự như 'template_directory'
đối với một chủ đề thông thường nhưng một giá trị khác và có thể là giá trị bạn cần cho một chủ đề con.
(nguồn: mikechinkel.com )
Để rõ ràng trên ảnh chụp màn hình này,
wp30.dev
là một tên miền chỉ chạy trên máy tính cục bộ của tôi. Nó hiện là một phiên bản của WordPress 3.0.1 và nó được cấu hình tại127.0.0.1
(giống nhưlocalhost
) trên máy tính xách tay của tôi và tôi sử dụng nó để thử nghiệm các ví dụ đặc biệt như thế này. Tôi đã sử dụng VirtualhostX để thuận tiện trên Mac OS X để giúp tôi thiết lập các.dev
miền riêng tư không thể định tuyến đó nhưng bất kỳ ai cũng có thể thực hiện thủ công bằng cách chỉnh sửa tệp máy chủ của máy tính và? tập tin httpd.conf.
Nhân tiện, trong trường hợp bạn không quen thuộc với Chủ đề trẻ em , hai câu trả lời WordPress khác có thể giúp ích gì:
get_stylesheet_directory_uri()
. Tôi có nên sử dụng đồng bằng ol ' get_stylesheet_directory()
?
Toàn bộ cấu trúc của đề tài được xây dựng trên đỉnh của hai lựa chọn - template
(giữ mẹ thư mục theme namre) và stylesheet
(giữ trẻ theme folder namr). Nếu không có chủ đề con được sử dụng thì đây là giống nhau.
Để có sự linh hoạt của các bộ lọc, thay vì tùy chọn truy cập trực tiếp, có tương ứng get_template()
và get_stylesheet()
.
Bây giờ điều duy nhất còn thiếu là kết hợp những thứ đó với vị trí thư mục chủ đề. Điều này có thể được thực hiện với get_theme_root_uri()
và một lần nữa thuận tiện bọc trong get_template_directory_uri()
và get_stylesheet_directory_uri()
.
[get_]bloginfo()
với template_directory
hoặc các stylesheet_directory
đối số chỉ đơn thuần là kết thúc những điều này và có rất ít lý do để sử dụng nó như thế. Tôi muốn nói rằng nó chỉ gây nhầm lẫn bằng cách có thư mục nói đối số (thường liên quan đến đường dẫn cục bộ), nhưng trả về URL.
Tổng hợp:
get_template_directory_uri()
để chỉ chủ đề hoặc chủ đề phụ huynhget_stylesheet_directory_uri()
để chỉ hoặc chủ đề con