Preservando as configurações do tema no tema filho

2

Meu cliente usa o tema Karma com muitas configurações nas opções de tema. Eu preciso manter minhas adições de CSS e PHP em um tema filho para que as atualizações de tema não acabem com isso. No entanto, quando seleciono meu tema infantil em Aparência > Temas, as principais configurações do tema desapareceram.

Existe alguma maneira de preservar as configurações do tema principal?

    
por drake035 04.10.2014 / 20:52

3 respostas

5

As modificações do tema do Wordpress são salvas na tabela de banco de dados wp_options no campo theme_mods_{themename} . Você pode copiá-lo e renomear usando o nome do tema filho.

    
por andrejm 31.03.2015 / 09:05
3

Devido à forma como essas configurações de tema são armazenadas como uma matriz no banco de dados, pode ser difícil copiá-las com apenas copiar e colar no phpmyadmin ou alguma tática semelhante.

O comando de opção WP CLI é seu amigo aqui. Se você não usa o WP CLI, confira! Veja como copiei as configurações do tema da fachada para um tema chamado storefront-sqcdy-child:

# 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 "'cat theme_mods_storefront.txt'"  --format=json

# cleanup the temp file
rm -f theme_mods_storefront.txt
    
por squarecandy 24.08.2017 / 15:18
0

Você pode fazer algo parecido com os temas filhos do Gênesis para salvar as configurações padrão do tema ao ativar e alternar temas:

//* 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',
        ) );

É claro que você precisaria modificar esse código para trabalhar com a funcionalidade de seus temas.

    
por Brad Dalton 31.03.2015 / 10:34