设置Wordpress页面及其所有子项的标题图像

时间:2009-06-12 17:42:52

标签: php wordpress

WordPress的。我有一些页面,每个页面都有孩子 - 不同的深度。

让我们说它是这样的:

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

我的问题: 我想为所有“约”页面设置一个图形标题,包括它的所有子页面......以及所有“东西”页面及其所有子页面的不同图形标题。

可以使用每个页面的自定义字段执行此操作,但我不相信我的用户会记住设置此字段。

我想添加到page.php模板并告诉页面找到它的父级顶级页面以确定它所在的“家庭”,然后设置标题图形那样...但我不想要投入大量时间(和运行时)资源遍历层次结构。

有什么想法吗?

提前多多感谢...

更新:

从下面的代码中,我将其修改为在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
    }

}

?>

2 个答案:

答案 0 :(得分: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,但还有其他方法。

答案 1 :(得分:0)

我会说测试当前页面的家庭。我认为这不会太费力,因为它只是一个简单的短路。

这是a previous SO thread on how you'd accomplish this