WordPress : Exécutez le bloc de code dans functions.php UNIQUEMENT lorsque le thème est activé. Utiliser register_activation_hook ?

Publié par Jean-Michel le

J’ai un code de configuration spécifique pour mon thème que je ne veux traiter que lorsque le thème est activé pour la première fois. J’avais l’impression que je pouvais utiliser register_activation_hook pour cela, mais cela ne semble pas fonctionner.

Exemple…

Dans mon fichier functions.php, je souhaite que la fonction doThemeSetup() ne s’exécute qu’à l’activation du thème et à aucun autre moment…

function doThemeSetup(){
  //stuff here only runs once, when theme is activated
}

register_activation_hook(__FILE__, 'doThemeSetup');

MISE À JOUR : depuis la publication de cette question, j’ai constaté que register_activation_hook n’est disponible que pour les plugins et non pour les thèmes.

Lire également:  Wordpress : Supprimer le plugin Addthis indésirable intégré au thème WordPress acheté ?

J’ai trouvé un moyen de faire une action similaire dans les thèmes mais j’obtiens des résultats incohérents:

if ( is_admin() && isset($_GET['activated'] ) && $pagenow == 'themes.php' )
{
  //do something
}

Le code ci-dessus ne semble pas s’exécuter lorsque le thème est activé pour la première fois, mais plutôt lorsque le thème est remplacé par un autre thème.

Lire également:  Wordpress : comment ajouter de nouvelles pages en utilisant la fonction principale de WP

Solution n°1 trouvée

/**
 * Install script to create databasetables and then insert default data.
 * And inserting defautl theame settings.
 * Only run if theme is being activated for the first time.
 */

$flag = get_option('first_time_theme_activation_check');

if ( $flag == false && is_admin())
{

  // put your code to run when theme is activated at first time by admin



  // update option at last
     update_option('first_time_theme_activation_check', 'true');
}

Solution n°2 trouvée

C’est plus une solution de contournement qu’une solution, mais si tout le reste échoue, vous pouvez l’essayer :

<?php
if (get_option('themename_installed') != 'true'){
    if (doThemeSetup()){
        add_option('themename_installed','true');
    }

}
?>

De cette façon, doThemeSetup n’est exécuté qu’une seule fois.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *