保留子主题中的主题设置

时间:2014-10-04 作者:drake035

我的客户使用Karma主题,在主题选项中有许多设置。我需要将添加的CSS和PHP保存在子主题中,以便主题更新不会将其删除。但是,当我在外观>主题中选择我的子主题时,主主题设置都消失了。

有没有办法保留主主题设置?

6 个回复
SO网友:squarecandy

由于这些主题设置在数据库中存储为数组的方式,仅使用phpmyadmin中的复制和粘贴或类似策略很难复制它们。

这个WP CLI option command 是你的朋友在这里。如果您还没有使用WP CLI,请查看它!下面是我如何将设置从店面主题复制到名为店面sqcdy子级的主题:

# save the existing theme settings in json format in a temporary text file
wp option get theme_mods_storefront --format=json > theme_mods_storefront.txt

# load the saved settings into the child theme option record in the database
wp option update theme_mods_storefront-sqcdy-child --format=json < theme_mods_storefront.txt

# cleanup the temp file
rm -f theme_mods_storefront.txt

SO网友:andrejm

Wordpress主题修改保存在wp_options 中的数据库表theme_mods_{themename} 领域您可以复制它并使用子主题名称重命名。

SO网友:Uriahs Victor

我知道这是一个老问题,但我需要这样做,而且很简单:

注意:这对于使用WordPress自定义程序配置其设置的主题非常有用

使用Updraftplus等插件备份您的网站(文件和数据库)访问您的数据库,无论是通过Cpanel的phpAdmin还是类似的方法{prefix}_options (wp\\u选项)表并运行查询:

SELECT * FROM {prefix}_options where option_name like \'theme_mods_%\'

这将调出为所有主题保存的主题mods。

查找带有当前活动主题名称的选项示例:theme_mods_mytheme

复制它的option_value 并保存到文本文件或其他文件中。

返回WordPress并激活新的子主题

然后返回数据库并刷新选项/再次运行查询,您应该会看到一个新选项,现在称为theme_mods_mytheme-child (假设您的孩子主题为“mytheme child”)

编辑它的option_value, 删除其中的内容并将先前复制的数据粘贴到文本文件中,然后保存更改。

返回站点并刷新页面,您将看到与父主题相同的内容。

如果您有一个名为“mytheme child”的子主题文件夹,并且您可能希望在“mytheme child”处于活动状态时对站点进行自定义更改后,将文件夹名称重命名为“newtheme”,则此方法也适用。

SO网友:Marco Panichi

我通过简单的copying the options in the database.

这里是the step-by-step procedure:

登录您的phpMyAdmin并选择webiste的数据库备份数据库执行此查询以清楚地了解情况:SELECT * FROM wp_options WHERE option_name LIKE "theme_mods_%"; 此指令将为迄今为止您在网站上激活的每个主题返回一行,修改父主题设置的行,由option\\u name=theme\\u mods\\u parent-theme-name标识。在这里的option\\u value字段中,您以序列化形式拥有所有父主题设置;复制它们;您可以使用unserialize tool 为了以人性化的形式查看内容,回到第3点,但现在修改子主题设置的行,将之前复制的设置粘贴到option\\u值字段中;保存

SO网友:Anders Kitson

这个插件对我来说效果很好

Child Theme Copy Settings

SO网友:Brad Dalton

您可以执行类似Genesis子主题的操作,以在激活和切换主题时保存默认主题设置:

//* Theme Setting Defaults
add_filter( \'genesis_theme_settings_defaults\', \'child_theme_defaults\' );
function child_theme_defaults( $defaults ) {

    $defaults[\'blog_cat_num\']              = 6;
    $defaults[\'content_archive\']           = \'full\';
    $defaults[\'content_archive_limit\']     = 150;
    $defaults[\'content_archive_thumbnail\'] = 0;
    $defaults[\'image_alignment\']           = \'\';
    $defaults[\'image_size\']                = \'entry-image\';
    $defaults[\'posts_nav\']                 = \'prev-next\';
    $defaults[\'site_layout\']               = \'full-width-content\';

    return $defaults;

}

//* Theme Setup
add_action( \'after_switch_theme\', \'child_theme_setting_defaults\' );
function child_theme_setting_defaults() {

    if( function_exists( \'genesis_update_settings\' ) ) {

        genesis_update_settings( array(
            \'blog_cat_num\'              => 6,
            \'content_archive\'           => \'full\',
            \'content_archive_limit\'     => 150,
            \'content_archive_thumbnail\' => 0,
            \'image_alignment\'           => \'\',
            \'image_size\'                => \'entry-image\',
            \'posts_nav\'                 => \'prev-next\',
            \'site_layout\'               => \'full-width-content\',
        ) );

    } else {

        _genesis_update_settings( array(
            \'blog_cat_num\'              => 6,
            \'content_archive\'           => \'full\',
            \'content_archive_limit\'     => 150,
            \'content_archive_thumbnail\' => 0,
            \'image_alignment\'           => \'\',
            \'image_size\'                => \'entry-image\',
            \'posts_nav\'                 => \'prev-next\',
            \'site_layout\'               => \'full-width-content\',
        ) );
显然,您需要修改此代码才能使用主题功能。

结束

相关推荐

Child-theme breaks site

所以,我有一个子主题,里面除了所需的CSS文件之外什么都没有。一旦我激活了这个儿童主题,我的整个网站就关闭了。最后我有两个问题:激活一个只有CSS的子主题怎么能破坏我的网站</我怎样才能回到我原来的主题</这些是网站给我的错误:Warning: require_once(/wp-content/themes/interio_child/admin/options-framework.php) [function.require-once]: 无法打开流:中没有此类文件或目录/wp-c