Je mets en place un thème enfant pour certains de mes professeurs, et dans le cadre du thème, j'aimerais qu'une poignée de plugins soient activés au moment où le thème est activé. Donc, naturellement, j'ai utilisé l'action after_setup_theme et appelé ma fonction de configuration. Cela fonctionne très bien, sauf qu'il s'exécute sur CHAQUE demande (administrateur ou autre). J'ai prouvé cela en ajoutant ceci à la fin de la fonction de configuration:
echo '<script type="text/javascript">alert("This action was run")</script>';
Et par conséquent, obtenez une alerte javascript sur chaque demande d'administration et chaque demande frontale (j'ai une configuration réseau, donc évidemment sur les sites où ce thème n'est pas actif, il n'exécute pas la fonction)
La question est donc: est-ce un bug? Suis-je en train de faire quelque chose de mal? Voici le code complet que j'utilise:
add_action( 'after_setup_theme', 'fwp_setup' );
function fwp_setup(){
// -- Unrelated code remove for the sake of brevity
require_once($_SERVER['DOCUMENT_ROOT'].'/wp-admin/includes/plugin.php');
activate_plugin('enable-media-replace/enable-media-replace.php');
activate_plugin('seo-image/seo-friendly-images.php');
activate_plugin('w3-total-cache/w3-total-cache.php');
echo '<script type="text/javascript">alert("This action was run")</script>';
}
Toute opinion serait très appréciée!
la source
after_switch_theme
fait exactement ce que je voulais ici. Il se déclenche après que le thème est passé à votre thème. L'une des solutions mentionnées ci-dessous utiliseswitch_theme
. Cela n'a pas les résultats escomptés, car cela ne se produit qu'en quittant votre thème. Référencer ce commentaire TracRéponses:
SOLUTION:
after_switch_theme
fait exactement ce que je voulais ici. Il se déclenche après que le thème est passé à votre thème. L'une des solutions mentionnées ci-dessous utiliseswitch_theme
. Cela n'a pas les résultats escomptés, car cela ne se produit qu'en quittant votre thème.Voici un article que j'ai trouvé comme référence: http://core.trac.wordpress.org/ticket/7795#comment:29
Voici mon code modifié
la source
L'
after_setup_theme
action est destinée à se déclencher à chaque chargement de WordPress. Cela fait simplement partie du processus au cours duquel WordPress appelle le système de modèles, détermine les différents paramètres de configuration du thème, puis procède au traitement ultérieur, comme la détermination du modèle correct à afficher, etc.En d'autres termes, le
after_setup_theme
représente le point auquel WordPress configure le thème actuel, pas le point auquel l' administrateur active et / ou configure le thème actuel.Ce que vous recherchez est un crochet d' activation de thème , qui n'est actuellement pas disponible, mais qui est à l'étude / en développement .
la source
init !== activation
. Normalement, vous appelez__construct()
fonction en php également uneinit
fonction. Cela signifie: initialiser l'instance.Malheureusement, il n'y a pas de crochet d'activation de thème. Cependant, une cette question fournit une solution pour cela.
Utilisez simplement le «crochet d'activation de thème» pour activer les plug-ins.
Une meilleure solution, dans la même veine, est celle-ci . Les deux utilisent essentiellement le
switch_theme
crochet.Selon les commentaires OP et le ticket Trac lié -
after_switch_theme
le crochet est-il requis?Cela passe le nom de l'ancien thème en argument. Cependant, si c'est dans votre
functions.php
(ce qu'il devrait être ...), le rappel ne se déclenchera que lorsque votre thème sera activé .De même, ajouter un rappel à
switch_theme
ne sera appelé que lorsque votre thème sera désactivé.la source
switch_theme
ne fonctionnait qu'après avoir désactivé le thème. Cependant,after_switch_theme
a parfaitement fonctionné.Une meilleure solution pourrait être d'utiliser le script d'activation du plugin de Thomas Griffin . Cela invitera les utilisateurs à installer les plugins de votre choix lorsque le thème est utilisé. Je pense que c'est un excellent moyen de séparer le plugin du thème, et de continuer à l'utiliser.
Dans votre thème, vérifiez si le plugin est actif avant d'utiliser ses fonctions. Cela permettra aux utilisateurs plus de choix et de contrôle.
Vous pouvez configurer le script d'activation facilement avec Knapsack .
la source
Votre meilleure solution serait maintenant d'utiliser le
switch_theme
hook et de filtrer l'argument '$ theme' passé pour voir s'il s'agit bien de lui, sinon de le retourner;la source