Conservando la configuración del tema en el tema secundario

2

Mi cliente usa el tema Karma con muchas configuraciones en las opciones de tema. Necesito mantener mis adiciones de CSS y PHP en un tema secundario para que las actualizaciones del tema no se borren. Sin embargo, cuando selecciono el tema de mi hijo en Apariencia > Temas, la configuración del tema principal se ha ido.

¿Hay alguna forma de conservar la configuración del tema principal?

    
pregunta drake035 04.10.2014 - 20:52

3 respuestas

5

Las modificaciones del tema de Wordpress se guardan en la tabla de base de datos wp_options en el campo theme_mods_{themename} . Puede copiarlo y cambiar su nombre usando el nombre del tema secundario.

    
respondido por el andrejm 31.03.2015 - 09:05
3

Debido a la forma en que estas configuraciones de tema se almacenan como una matriz en la base de datos, puede ser difícil copiarlas solo con copiar y pegar en phpmyadmin o alguna táctica similar.

El comando de opción CLI de WP es tu amigo aquí. Si aún no usa WP CLI, ¡pruébelo! Así es como copié la configuración del tema del escaparate a un tema llamado 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
    
respondido por el squarecandy 24.08.2017 - 15:18
0

Podrías hacer algo como lo que incluyen los temas secundarios de Génesis para guardar la configuración de temas predeterminada al activar y cambiar de tema:

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

Claramente, necesitarías modificar este código para trabajar con la funcionalidad de tus temas.

    
respondido por el Brad Dalton 31.03.2015 - 10:34

Lea otras preguntas en las etiquetas