Comment activer les plugins via le code?
5 réponses
- votes
-
- 2010-11-14
Voici commentje l'aifait dans certaines applications Web:
function run_activate_plugin( $plugin ) { $current = get_option( 'active_plugins' ); $plugin = plugin_basename( trim( $plugin ) ); if ( !in_array( $plugin, $current ) ) { $current[] = $plugin; sort( $current ); do_action( 'activate_plugin', trim( $plugin ) ); update_option( 'active_plugins', $current ); do_action( 'activate_' . trim( $plugin ) ); do_action( 'activated_plugin', trim( $plugin) ); } return null; } run_activate_plugin( 'akismet/akismet.php' );
This is how I did it in some web apps:
function run_activate_plugin( $plugin ) { $current = get_option( 'active_plugins' ); $plugin = plugin_basename( trim( $plugin ) ); if ( !in_array( $plugin, $current ) ) { $current[] = $plugin; sort( $current ); do_action( 'activate_plugin', trim( $plugin ) ); update_option( 'active_plugins', $current ); do_action( 'activate_' . trim( $plugin ) ); do_action( 'activated_plugin', trim( $plugin) ); } return null; } run_activate_plugin( 'akismet/akismet.php' );
-
Comme Rarst l'a écrit,cen'estpastrès "sûr".Vous devez vous assurer que lesplugins que vous activez de cettemanière sont sûrs/ne casserontpas votre site.As Rarst wrote, this is not very "safe". You should make sure the plugins you activate this way are safe / will not break your site.
- 1
- 2010-11-14
- sorich87
-
Pas dutout sûr,même,mais diable,si vous les activezparprogramme,vous êtes censé savoir ce que vousfaites.;-)Not safe at all, even, but heck, if you're activating them programmatically you're supposed to know what you're doing. ;-)
- 10
- 2010-11-14
- Denis de Bernardy
-
La sécuritémise àpart -je veux dire,celane faitpaspartie de la question,non?- J'aime l'approche de Sorich carelle appelle lesfiltres d'activation standard.Ainsi,lesplugins reçoivent un changementpourexécuter leurs routines de configuration s'ilsen ont.Safety aside - I mean, this is not part of the question, right? - I like sorich's approach because it calls the standard activation filters. So the plugins get a change to run their setup routines if they have some.
- 0
- 2010-11-14
- hakre
-
Ceci,aumoinsplus récemment,réinvente la roue.J'ai utilisé le `activate_plugin ()`intégré,et cela semblefonctionner de lamêmemanière.This, at least more recently, is reinventing the wheel. I have used the built-in `activate_plugin()`, and it seems to work the same.
- 3
- 2013-09-18
- Jake
-
J'aimerais savoir ce quin'estpas sûr à ce sujetpour queje puisse le réparer,mais àpart cela,c'est lapremière solution àtravailler!Merci...i would love to know what not safe about this so i can fix it but other than that this is the first solution to work! thanks...
- 0
- 2014-06-02
- Sagive SEO
-
dans quelfichier source cela va-t-il?which source file does this go into?
- 0
- 2016-08-25
- Janus Troelsen
-
@SagiveSEO C'estparfaitement sûr - c'est similaire à lafaçon dont WP lefait,saufen exigeant l'entrée/l'approbation de l'utilisateuret enformant desnonceset des vérificationspour cesnonces -il suffit d'introduire les vérificationsnécessairespour lancer cettefonctionn'importe où - afin qu'ilne soitpas accessible de l'extérieur (depuisweb,etc.),et ilne peuten aucun cas être appelé au hasard.@SagiveSEO Its perfectly safe - its similar to how WP does it, except by requiring user input/approval and form nonces and checks for those nonces - just introduce necessary checks for initiating that function anywhere - so that it cannot be accessed from outside (from web etc), and it cannot be randomly called in any way.
- 2
- 2018-10-24
- unity100
-
Il suffit de laisser un commentairepour être d'accord avec @ unity100et pour désarmer ces commentaires "pas sûrs".C'est unetrèsbonnefaçon defaire.Il s'agit de savoir oùet comment vous allez l'utiliser,cela _peut_ le rendre dangereux.Mais cela vautpour àpeuprèsn'importe quelmorceau de code que vous copiez àpartir d'Internetz.Just dropping a comment to agree with @unity100 and to disarm these "not safe" comments. This is a perfectly fine way to do. It's about where and how you will use it, that _can_ make it unsafe. But that goes for just about any piece of code you copy from the internetz.
- 1
- 2020-04-24
- maryisdead
-
- 2010-11-14
Leprocessus d'activation dupluginest codépourfonctionner avec l'interface d'administration WP.Ileffectue quelques vérificationspourempêcher l'activation desplugins avec deserreurs (untel chargement au démarragepeutinterrompre WP).
Ilestgérépar lafonction
activate_plugin()
( source ) quiest documenté commeinutilisable ailleurs.Donc,si vous voulez activer lepluginpar code,l'objectif lui-mêmeest relativement simple - changer l'option
active_plugins
pourinclure ceplugin.Mais vous devrez recréer les hooks d'activation associés àpartir de zéroet vous risquerez de casser le siteen activant sans étape sandbox.Plugin activation process is coded to work with WP admin interface. It performs some checks to prevent enabling plugins with errors (loading such on start might break WP).
It is handled by
activate_plugin()
function (source) which is documented as unusable elsewhere.So if you want to activate plugin by code the goal itself is relatively easy - to change
active_plugins
option to include that plugin. But you will have to re-create related activation hooks from scratch and will risk breaking site by activating without sandbox step. -
- 2010-11-14
Lesplugins sont stockés dans untableau dans l'option 'active_plugins'. Letableau contient le chemin dufichier vers chaqueplugin actif.
Pour activer unplugin,vous devez déterminer quel sera son chemin,puispasser ce chemin à
activate_plugin($plugin_path)
.C'estplusfacile à dire qu'àfaire,et (aumoinsen 2.9) le code debasene facilitepas les choses.
Avant depouvoir activer_plugin (),vous devezinclure lefichierplugin.php de wp-admin/includes/. Vous devriez également vérifier que votrepluginn'estpas déjà actif. Le résultat ressemble à ceci (YMMV):
// Define the new plugin you want to activate $plugin_path = '/path/to/your/new/plugin.php'; // Get already-active plugins $active_plugins = get_option('active_plugins'); // Make sure your plugin isn't active if (isset($active_plugins[$plugin_path])) return; // Include the plugin.php file so you have access to the activate_plugin() function require_once(ABSPATH .'/wp-admin/includes/plugin.php'); // Activate your plugin activate_plugin($plugin_path);
Plugins are stored in an array in the 'active_plugins' option. The array contains the file path to each plugin that is active.
To activate a plugin you need to determine what it's path will be, then pass that path to
activate_plugin($plugin_path)
.This is easier said than done though, and (at least in 2.9) the core code does not make it easy.
Before you can activate_plugin() you need to include the plugin.php file from wp-admin/includes/. You should also check to make sure your plugin isn't already active. The result looks something like this (YMMV):
// Define the new plugin you want to activate $plugin_path = '/path/to/your/new/plugin.php'; // Get already-active plugins $active_plugins = get_option('active_plugins'); // Make sure your plugin isn't active if (isset($active_plugins[$plugin_path])) return; // Include the plugin.php file so you have access to the activate_plugin() function require_once(ABSPATH .'/wp-admin/includes/plugin.php'); // Activate your plugin activate_plugin($plugin_path);
I use this on production in WP 2.9 and have not had any major issues but in my testing it had very unexpected results with WPMU, so beware using this on network installs.
-
un longmoment s'est écoulémais si vous vousen souvenez,quel a été le résultatinattendu à ce sujet?a long time passed but if you remember, what was unexpected result on this?
- 0
- 2012-08-25
- Ünsal Korkmaz
-
Jene me souvienspas dutout.Jepense que celan'atout simplementpasfonctionnéet j'aifait les choses à lamainparce queje n'avaispastrop de sites MS.I completely don't remember. I think it just didn't work and I did things by hand because I didn't have too many MS sites.
- 0
- 2012-08-28
- jerclarke
-
commentexécuter ceci?sije l'exécute directement,get_optionn'estpas défini ...how do I execute this? if i just execute it directly, get_option is not defined...
- 0
- 2016-08-25
- Janus Troelsen
-
Ajoutez ceci dansfunctions.phpet cela devraitfonctionner,bien quemême dans ce cas,vous devrieztoujoursmettre des choses dans desfonctionset les accrocher à "init" ou "wp".Add this in functions.php and it should work, though even then you should always put things in functions and hook them to "init" or "wp".
- 0
- 2016-08-26
- jerclarke
-
- 2016-10-21
Wordpressfournit unefonction d'activation desplugins,selon WP Codex
function plugin_activation( $plugin ) { if( ! function_exists('activate_plugin') ) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; } if( ! is_plugin_active( $plugin ) ) { activate_plugin( $plugin ); } } plugin_activation('akismet/akismet.php');
Wordpress provides a function for activating plugins, according to WP Codex
function plugin_activation( $plugin ) { if( ! function_exists('activate_plugin') ) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; } if( ! is_plugin_active( $plugin ) ) { activate_plugin( $plugin ); } } plugin_activation('akismet/akismet.php');
-
Ethan,qu'est-ce quine vapas avecma réponse?Ethan, what is wrong with my answer?
- 0
- 2016-10-28
- Mowshon
-
Bien queposter uniquement le code soit acceptablepour une réponse,ilpeut être difficile àinterpréterpourtoutnouveauprogrammeur qui lira votre réponse.De cettefaçon,OPpeut avoir unemeilleure compréhension dufonctionnement de votre code.While posting just the code is okay for an answer, it may be hard to interpret for any new programmers that read your answer. This way, OP can have a better understanding on how your code works.
- 0
- 2016-10-28
- Ethan O'Sullivan
-
- 2019-10-30
Vouspouvez simplement appeler lafonctionpar défaut de WordPress.
activate_plugin('akismet/akismet.php');
Veuillez consulter le lien ci-dessouspourplus de détails.
You can simply call the WordPress default function.
activate_plugin('akismet/akismet.php');
Please check below link for more detail.
Sipossible,comment lespluginsinstallés (c'est-à-dire que lesfichiers ont étéplacés dans le répertoire wp-content/plugins)peuvent-ils être activés àpartir d'autresplugins?