$wp_customize->add_setting('mytheme_primary', ['default' => '#1e73be', 'sanitize_callback' => 'sanitize_hex_color']);
$color = get_theme_mod('mytheme_primary', '#1e73be');

在自定义器里把主色调从 #1e73be 改成 #d63638,点发布提示成功,前台按钮仍是蓝色,清缓存、换浏览器都一样。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:add_setting 里的 setting id 和前台 get_theme_mod 里的名字不一致,一个带主题前缀一个没带,读到的永远是空值,空值又回落到默认色。transport 设成 postMessage 却没有配套预览脚本,面板看着变了、页面却没动。

「自定义器选项不生效」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。监控和日志的时间要对上,时区不一致会多绕很大一圈。

临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

处理上按这个顺序:把 add_setting 的 id 和 get_theme_mod 的 key 逐字对一遍,前缀和大小写都算;在模板里 var_dump(get_theme_mod('你的key')),拿到新值就说明是样式没输出;先用 refresh 验证链路,确认后再换 postMessage 并补 JS。

确认没问题再收工,发布后前台按钮颜色跟着变,刷新和匿名窗口下都是新色。

作者 9823189