PHP에서 테마 URL을 어떻게 얻습니까?


38

테마의 이미지 / 헤더 디렉토리에서 이미지를 참조하려면 테마 디렉토리의 URL을 가져와야합니다. 이것은 PHP에서 어떻게 이루어 집니까?

답변:


47

이 함수는 테마 디렉토리 URL 을 반환 하므로 다른 함수에서 사용할 수 있습니다.

get_bloginfo('template_directory');

또한,이 기능을합니다 에코 브라우저에 테마 디렉토리 URL을 :

bloginfo('template_directory');

테마 images/headers폴더 에있는 이미지의 예 는 다음과 같습니다.

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

참고 : 현재 활성 하위 테마가 아닌 하위 테마를 사용중인 경우 상위 테마 의 경로를 제공합니다 . 아래에 더 긴 답변이 자세히 설명되어 있습니다.
Jason

2
당신은 간단하게 사용할 수 있습니다get_template_directory_uri()
Pei

32

@EAMann이 말한 내용에 유의하십시오 . Eric은 일반적인 접근 방식과 기능 bloginfo()get_bloginfo()작동 방식과 매개 변수 'template_directory'를 전달하여 (대부분의) 테마에 필요한 값을 얻는 방법에 대해 맞습니다 .

그러나주의 사항이 있으며 그 주의 사항 은 최신 하위 테마에 있습니다. 하위 테마를 사용하는 경우 'template_directory'실제로 상위 테마 디렉토리에있는 이미지를 참조하지 않는 한 원하는 것이 아닐 수도 있습니다. 대신 하위 주제를 당신이 아마 원하는 것은 전달하는 것입니다 stylesheet_directory(나는 이름들이 무엇인지를 말하지 않지만 헤이, 즉 그것이 단지 방법, 알아, 알아!)를 사용 에릭의 답변 다소 차입 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'하지만 다른 값과 자식 테마에 필요한 값 을 반환 한다는 것을 알 수 있습니다 .

WordPress에서 하위 테마가 있거나없는 get_bloginfo ()의 반환 값
(출처 : mikeschinkel.com )

이 스크린 샷을 명확히하기 위해 wp30.dev로컬 컴퓨터에서만 실행되는 도메인입니다. 현재 WordPress 3.0.1의 인스턴스이며 랩톱 에서 127.0.0.1(와 동일 localhost) 구성되어 있으며 이와 같은 임시 예제를 테스트하는 데 사용합니다. 개인적으로 라우팅 할 수 없는 개인 도메인을 설정하는 데 도움이되도록 Mac OS X에서 편의상 VirtualHostX 를 사용 .dev했지만 누구나 컴퓨터의 호스트 파일과? httpd.conf 파일

그건 그렇고, 당신이 도움이 될 수있는 두 개의 다른 WordPress Answers가 있는 Child Themes에 익숙하지 않은 경우 :


와우, 좋은 대답입니다. 나는 현재 작업중 인 테마에 게으르고 자식 테마를 설정하지 않았지만 앞으로는 매우 도움이 될 것입니다. 이 스크립트도 축하합니다. 잘 코딩되었습니다. 감사!
Michael Crenshaw

안녕, 좋은 대답! 나는 보통을 사용 get_stylesheet_directory_uri()합니다. 일반 ol '을 사용해야합니까 get_stylesheet_directory()?
djb

13

테마의 전체 구조는 template(부모 테마 폴더 이름 stylesheet유지 ) 및 (자식 테마 폴더 namr 유지 ) 두 가지 옵션 위에 구축됩니다 . 사용 된 하위 테마가 없으면 동일합니다.

직접 필터의 유연성보다는 액세스 옵션을 사용하려면, 거기에 따라 있습니다 get_template()get_stylesheet().

이제 누락 된 것은 테마 폴더 위치와 결합하는 것입니다. 이 함께 할 수있는 get_theme_root_uri()다시 편리에 싸여 get_template_directory_uri()get_stylesheet_directory_uri().

[get_]bloginfo()with template_directory또는 stylesheet_directoryarguments는 단순히 이것들을 감싸고 그것을 그렇게 사용할 이유가 거의 없습니다. 디렉토리를 말하면서 (일반적으로 로컬 경로와 관련이 있지만) URL을 반환하는 것만으로 혼란 스럽습니다.

요약 :

  • 부모 테마 get_template_directory_uri() 참조하는 데 사용
  • 사용 get_stylesheet_directory_uri()전용 또는 자식 테마

-1

나는 이것을 사용한다 (dirname(get_bloginfo('stylesheet_url')))


1
왜 이것이 다른 솔루션보다 나은지 설명이 없습니까?
fuxia
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.