Php 设置Wordpress页面及其所有子页面的标题图像
Wordpress。我有几页,每一页都有孩子——不同的深度 假设是这样的:Php 设置Wordpress页面及其所有子页面的标题图像,php,wordpress,Php,Wordpress,Wordpress。我有几页,每一页都有孩子——不同的深度 假设是这样的: +about -- page1 -- page2 +stuff -- page1 --- sub-sub-page -- page2 我的问题是: 我想为所有“关于”页面设置一个图形标题,包括其所有子页面。。。和一个不同的图形标题为所有的“东西”页面和它的所有孩子 我可以为每个页面使用一个自定义字段,但我不相信我的用户会记得设置这个字段 我考虑添加到page.php模板中,并告诉页面找到其父顶级页面,以确定它所在的“族
+about
-- page1
-- page2
+stuff
-- page1
--- sub-sub-page
-- page2
我的问题是:
我想为所有“关于”页面设置一个图形标题,包括其所有子页面。。。和一个不同的图形标题为所有的“东西”页面和它的所有孩子
我可以为每个页面使用一个自定义字段,但我不相信我的用户会记得设置这个字段
我考虑添加到page.php模板中,并告诉页面找到其父顶级页面,以确定它所在的“族”,然后以这种方式设置标题图形……但我不想投入大量的时间(和运行时)资源遍历层次结构
有什么想法吗
提前非常感谢
更新:
从下面的代码中,我将其修改为在Wordpress循环之外使用(尚未集成“默认”值)
我想说测试当前页面的系列。我认为这不会太费力,因为这只是一个简单的短路
以下是。注意:这个答案假设(可能是错误的)没有内置的方法来实现这一点
您可以在模板中编写查找预定义自定义字段的内容。如果不存在,它可以向父页面询问其自定义字段的版本,依此类推
$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,但还有其他方法。有没有办法设置默认回退?以防在没有父级或没有值的情况下创建页面?如果您尝试使用它,我刚刚向代码中添加了几个修复程序,但是是的!我现在再做一次编辑。
$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';
}