Mon client utilise le thème Karma avec de nombreux paramètres dans les options de thème. Je dois conserver mes ajouts CSS et PHP dans un thème enfant afin que les mises à jour de thème ne l'effacent pas. Toutefois, lorsque je sélectionne le thème de mon enfant dans Apparence> Thèmes, les paramètres principaux du thème ont disparu.
Est-il possible de préserver les paramètres du thème principal?
En raison de la manière dont ces paramètres de thème sont stockés sous forme de tableau dans la base de données, il peut être difficile de les copier avec un simple copier-coller dans phpmyadmin ou une tactique similaire.
La commande d'option WP CLI est votre ami ici. Si vous n'utilisez pas déjà WP CLI, vérifiez-le! Voici comment j'ai copié les paramètres du thème de la vitrine dans un thème appelé 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 --format=json < theme_mods_storefront.txt
# cleanup the temp file
rm -f theme_mods_storefront.txt
Les modifications de thème Wordpress sont enregistrées dans la table de base de données wp_options
dans le champ theme_mods_{themename}
. Vous pouvez le copier et le renommer en utilisant le nom de votre thème enfant.
Vous pouvez faire quelque chose comme ce que les thèmes enfants Genesis incluent pour enregistrer les paramètres de thème par défaut lors de l'activation et du changement de thème:
//* 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',
) );
Il est clair que vous devrez modifier ce code pour utiliser les fonctionnalités de vos thèmes.