全球主题定制多站点

时间:2021-12-20 作者:Lautaro Ayosa

我希望能够从我的任何站点(主站点或任何子站点)自定义我的主题,并对整个网络产生更改影响。

现在,当我自定义主站点时,它不会将更改复制到其余子站点。

我知道这些数据存储在theme_mods_themename, 但我需要;复制并粘贴“;这是每个站点上的新值(使用自定义程序时生成的新值)。

有没有办法;统一“;此设置?

提前谢谢你

UPDATE (DECEMBER 21 2021):

我发现了另一件让我失去理智的事。至少在我的情况下,主题颜色不会与中的其他主题设置一起存储theme_mods_kadence-child, 它们存储在kadence_global_palettewp-options 数据库表。

仍然没有找到一种方法;同步(&Q);所有自定义设置。我一直在读Pat J在第一条评论中所说的话,但还没来得及解释清楚

UPDATE (DECEMBER 23 2021)

1 个回复
最合适的回答,由SO网友:Lautaro Ayosa 整理而成

终于解决了!如果要使用此代码,请确保将选项名称更改为主题使用的名称(更改“theme\\u mods\\u kadence-child”和“kadence\\u global\\u palete”)。

我用过get_option 为了获取最近保存的数据,我在所有站点循环使用update_option 在所有子网站上设置新数据。最后我用了customize_save_after 操作,以便在保存新的自定义程序数据后立即激活此功能。

add_action( "customize_save_after", "update_customizer_networkwide");
function update_customizer_networkwide () {
    // Get current theme mods
    $theme_mods_kadence = get_option("theme_mods_kadence-child");
    $global_palette = get_option("kadence_global_palette");


    // loop through all sites and set new theme mods
    $sites = get_sites();
    foreach ($sites as $site) {
        switch_to_blog( $site->blog_id );

        update_option("theme_mods_kadence-child", $theme_mods_kadence);
        update_option("kadence_global_palette", $global_palette);
        
        restore_current_blog();
    }
}
希望这对你们中的一些人有所帮助!