Description

Cette action se lance plusieurs fois et les paramètres diffèrent en s'accordant au contexte, si l'ancien thème existe ou pas. Si l'ancien thème est manquant, le paramètre sera le slug de l'ancien thème.

Paramètres

$old_name

(string) Nom de l'ancien thème

$old_theme

(WP_Theme) Instance de l'ancien thème

Où trouver le hook after_switch_theme dans le CMS Wordpress

wp-includes/default-filters.php

Ligne 305

add_action( 'init', 'check_theme_switched', 99 );
add_action( 'after_switch_theme', '_wp_menus_changed' );
add_action( 'after_switch_theme', '_wp_sidebars_changed' );

wp-includes/theme.php

Ligne 2888

        // Prevent widget & menu mapping from running since Customizer already called it up front
        if ( get_option( 'theme_switched_via_customizer' ) ) {
            remove_action( 'after_switch_theme', '_wp_menus_changed' );
            remove_action( 'after_switch_theme', '_wp_sidebars_changed' );
            update_option( 'theme_switched_via_customizer', false );
        }

Ligne 2907

             * @param string   $old_name  Old theme name.
             * @param WP_Theme $old_theme WP_Theme instance of the old theme.
             */
            do_action( 'after_switch_theme', $old_theme->get( 'Name' ), $old_theme );
        } else {
            /** This action is documented in wp-includes/theme.php */
            do_action( 'after_switch_theme', $stylesheet, $old_theme );
        }

Exemple

Mettre à jour la taille par défaut d'une image medium quand un nouveau thème est activé
function maj_default_image_size( $old_theme_name, $old_theme = false ) {
    update_option( 'medium_size_w', 800 );
    update_option( 'medium_size_h', 400 );
}
add_action( 'after_switch_theme', 'maj_default_image_size', 10, 2 );

Sources

Source Wordpress : after_switch_theme

Autres hooks dans le même fichier : wp-includes/theme.php