2009-06-12 3 views
2

Wordpress. 나는 한 줌의 페이지를 가지고 있는데, 각 페이지에는 아이들이있다.Wordpress 페이지 및 모든 하위 폴더의 머리글 이미지 설정

하는의는이처럼 가정 해 봅시다 :

+about 
-- page1 
-- page2 
+stuff 
-- page1 
--- sub-sub-page 
-- page2 

내 문제 : 나는 대한 그래픽 헤더를 설정할 모든 모든 아이들 ... 그리고 모두를위한 다른 그래픽 헤더를 포함한 페이지 "에 대한" "물건"페이지와 모든 자녀.

각 페이지마다 맞춤 입력란을 사용하여 수행 할 수 있지만이 입력란을 설정하는 것을 기억하지는 않습니다.

page.php 템플릿을 추가하고 상위 최상위 페이지를 찾아 페이지에 "패밀리"가 있는지 확인한 다음 헤더 그래픽을 그런 식으로 설정하는 방법에 대해 생각했습니다.하지만 그렇지 않습니다. 계층 구조를 가로 지르는 많은 시간 (및 런타임) 리소스를 투자하려고합니다.

아이디어가 있으십니까? 사전에

많은 덕분에 ...

UPDATE : 아래의 코드를 촬영이

, 나는 워드 프레스 루프의 외부에 사용하도록 수정 (아직 아직 "기본"값을 통합하지 않은).

<?php 
    global $wp_query; 
$postid = $wp_query->post->ID; 

$header_swf = get_post_meta($postid, 'header_swf', true); 

if (!$header_swf) { 
    $parent = get_page($wp_query->post->post_parent); //array of values for this page's parent, directly above it 

    while (!$header_swf && $parent) { 
     $header_swf = get_post_meta($parent->ID, 'header_swf', true); 
     $parent = get_page($parent->post_parent); //new parent 
    } 

} 

?> 

답변

1

참고 :이 대답에는이를 수행하는 기본 제공 방법이 없다고 가정합니다.

템플릿에 미리 정의 된 사용자 정의 필드를 찾는 내용을 쓸 수 있습니다. 존재하지 않는 경우 상위 페이지에 사용자 정의 필드의 버전을 묻는 등의 작업을 할 수 있습니다. 이 각각의 주어진 URL에 대한 값을 캐시 가치가있을 수도 있으므로

$val = get_post_custom_values('header_image'); 
if (!val) { 
    $parent = get_page($post->post_parent); 
    while (!$val && $parent) { 
     $val = get_post_custom_values('header_image', $parent->id); 
     $parent = get_page($parent->post_parent); 
    } 
    if (!$parent && !val) // has failed to find a header image! 
     $val = 'my default value'; 
} 

또는 그런 일

.....

그 데이터베이스 무거운 정말 수 있습니다 지적한다. 나는 개인적으로 memcached를 권하고 싶지만 다른 방법이있다.

+0

기본 폴백을 설정할 수 있습니까? 페이지가 부모없이 또는 값없이 생성되는 경우를 대비하여? – jmccartie

+0

코드를 가지고 놀려고한다면 코드에 몇 가지 수정 사항을 추가했습니다. 나는 지금 또 다른 편집을 할 것이다. – Oli

0

현재 페이지의 가족에 대한 테스트라고 말하고 싶습니다. 나는 그것이 단순한 단락이기 때문에 그것이 너무 부담 스러울 것이라고 생각하지 않을 것이다.

여기에 a previous SO thread on how you'd accomplish this입니다.

관련 문제