2009-06-12 244 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

相关问题