it-swarm-ko.tech

PHP에서 테마 URL을 얻으려면 어떻게해야합니까?

테마의 image/headers 디렉토리에있는 이미지를 참조하기 위해 테마 디렉토리의 URL을 가져와야합니다. 이것이 PHP로 어떻게 이루어 집니까?

38
Michael Crenshaw

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

get_bloginfo('template_directory');

또는이 함수는 echo 브라우저에 대한 테마 디렉토리 URL입니다.

bloginfo('template_directory');

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

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

@ EAMann이 (가) 경고와 함께 말했습니다. Eric은 일반적인 접근 방법과 함수 bloginfo()get_bloginfo()의 작동 방식과 'template_directory' 매개 변수를 전달하여 (대부분의) 테마에 필요한 값을 얻는 방법에 대해 옳습니다.

하지만주의해야 할 점이 있습니다. caveat는 새로운 Child Themes와 같습니다. 자식 테마를 사용하고 있다면 실제로 시도하지 않는 한 'template_directory'는 아마도 원하는 것이 아닙니다. 부모 테마 디렉토리에있는 이미지를 참조하십시오. 자식 테마 대신 stylesheet_directory를 전달하는 것이 좋습니다. (나는 알고 있습니다. 이름이 자신의 정보를 알려주지는 않았지만, 그것이 어땠는지 알 것입니다. !) stylesheet_directory를 사용하여 Eric의 회신에서 다소 차용하면 다음과 같이 보일 것입니다 (예제를 줄여 포장하지 않을 것입니다).

<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'와 동일한 것을 반환하지만 다른 값을 가질 수 있으며 자식 테마에 필요한 값일 수 있습니다.

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

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

그런데, 당신이 _ (Child Themes에 익숙하지 않은 경우에 도움이 될 수있는 두 가지 다른 WordPress Answers가 있습니다 :

32
MikeSchinkel

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

옵션에 직접 액세스하는 것이 아니라 필터의 유연성을 가지려면 그에 따라 get_template()get_stylesheet() 가 있습니다.

이제 단 한가지는 테마 폴더 위치와 결합하는 것입니다. 이것은 get_theme_root_uri() 로 할 수 있고 get_template_directory_uri()get_stylesheet_directory_uri() 로 다시 묶을 수도 있습니다.

[get_]bloginfo()template_directory 또는 stylesheet_directory 인수는 단지 이것을 감쌀 뿐이며 그런 식으로 사용할 이유는 거의 없습니다. 나는 디렉토리 (일반적으로 로컬 경로와 관련이 있음)를 말하며 URL을 반환한다는 인수를 사용하는 것이 혼란 스럽다고 말하고 싶습니다.

Sumary :

  • only 또는 parent theme을 참조하려면 get_template_directory_uri()을 사용하십시오.
  • get_stylesheet_directory_uri() only 또는 child theme에 사용하십시오.
12
Rarst