Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 设置Wordpress页面及其所有子页面的标题图像_Php_Wordpress - Fatal编程技术网

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

Php 设置Wordpress页面及其所有子页面的标题图像,php,wordpress,Php,Wordpress,Wordpress。我有几页,每一页都有孩子——不同的深度 假设是这样的: +about -- page1 -- page2 +stuff -- page1 --- sub-sub-page -- page2 我的问题是: 我想为所有“关于”页面设置一个图形标题,包括其所有子页面。。。和一个不同的图形标题为所有的“东西”页面和它的所有孩子 我可以为每个页面使用一个自定义字段,但我不相信我的用户会记得设置这个字段 我考虑添加到page.php模板中,并告诉页面找到其父顶级页面,以确定它所在的“族

Wordpress。我有几页,每一页都有孩子——不同的深度

假设是这样的:

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