调 get_template_part('template-parts/card', null, ['size' => 'large']) 传了数组,卡片模板里 var_dump($args) 输出 NULL,尺寸参数完全没进来。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,$args 从 WordPress 5.5 才开始支持,旧版本第三个参数直接被忽略,模板里自然拿不到。新版里 $args 也只存在于被引入文件的局部作用域,模板里没接住就取不到值。
「get_template_part 传参」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。报错里带路径的,先去看那个路径在不在、权限对不对。
get_template_part('template-parts/card', null, ['size' => 'large']);
// card.php 内
$size = $args['size'] ?? 'default';
同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。
具体做法是,先确认站点版本不低于 5.5,低于就改用 set_query_var 传值;在模板开头写 $args = $args ?? []; 再取 $args['size'],避免未定义警告;用 locate_template 检查实际加载的是哪个文件,子主题里的同名文件会优先。
最后用这个标准收尾,卡片模板里打印出的 size 是 large,不同调用处传的值各自生效。
