web-dev-qa-db-fra.com

Un meilleur crochet d’action pour la création de table que le crochet d’action after_switch_theme et switch_theme

Je souhaite créer une table uniquement si mon thème personnalisé est activé. J'ai essayé avec le crochet d'action after_switch_theme mais il crée une table quel que soit mon thème personnalisé. Cela signifie que cela déclenche une action si j'active Twenty fifteen ou tout autre thème.

add_action('after_switch_theme', ['\Recruitment\recruitment', 'create_table']);

Je veux créer une table uniquement si mon thème personnalisé est un thème actuel ou l'activation de ce thème.

Y a-t-il un crochet pour cela ou un autre moyen?

1
pixelngrain

Ah je l'ai trouvé.

Vous pouvez utiliser le crochet d'action after_setup_theme. Donc ce sera comme

add_action('after_setup_theme', ['\Recruitment\recruitment', 'create_table']);

Code mis à jour

$theme = wp_get_theme();

if ( $theme->name == 'My THEME NAME' ) {

  global $wpdb;
  global $charset_collate;

  $sql = "CREATE TABLE IF NOT EXISTS ... $charset_collate;";

  require_once ABSPATH . 'wp-admin/includes/upgrade.php';
  dbDelta( $sql );

  add_option( 'ab_db_version', self::$db_version );

}

// in another file

add_action('after_switch_theme', ['\Recruitment\recruitment', 'create_table']);
1
pixelngrain