2009-06-12 68 views
2

Wordpress。我有幾頁,每頁都有孩子 - 深度不一。爲Wordpress頁面及其所有子項設置頁眉圖像

比方說是這樣的:

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

我的問題: 我想設置一個圖形頭所有的「關於」頁面,包括其所有的孩子......和所有不同的圖形頭「東西」頁面及其所有孩子。

可能做這個使用每個單獨的頁面的自定義字段,但我不相信我的用戶記得設置此字段。

我想添加到page.php模板,並告訴頁面找到它的父級頂層頁面來確定它在哪個「家族」,然後設置標題圖形的方式......但我沒有希望投入大量時間(和運行時間)資源遍歷層次結構。

任何想法?

提前許多感謝...

UPDATE:

從下方以代碼,我修改了它的WordPress的循環外使用(尚未納入「默認」值,但)。

<?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

注:這個回答假設(也許是不正確的),沒有內置的方法來做到這一點。

你可以寫在尋找一個預定義的自定義字段模板的東西。如果不存在,它可以向父頁面詢問其自定義字段的版本,依此類推。

$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'; 
} 

或者類似的東西.....

我應該指出的是,也許真的數據庫嚴重,因此它可能是值得緩存爲每個給定的URL的值。我個人推薦memcached,但還有其他方法。

+0

有沒有辦法在此設置默認回退?以防萬一沒有父母或沒有價值創建頁面? – jmccartie 2009-06-12 18:20:26

相關問題