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
}
}
?>
答案 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)
我会说测试当前页面的家庭。我认为这不会太费力,因为它只是一个简单的短路。