{"id":228847,"date":"2022-10-21T12:52:00","date_gmt":"2022-10-21T09:52:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228847"},"modified":"2022-11-09T04:30:45","modified_gmt":"2022-11-09T01:30:45","slug":"controler-lactivation-dune-extension-woocommerce","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/controler-lactivation-dune-extension-woocommerce\/","title":{"rendered":"Contr\u00f4ler l&rsquo;activation d&rsquo;une extension WooCommerce"},"content":{"rendered":"\n<p>Lors de la cr\u00e9ation d&rsquo;une extension WooCommerce, il est important de consid\u00e9rer que lorsque l&rsquo;extension est activ\u00e9e, l&rsquo;utilisateur peut ne pas avoir WooCommerce install\u00e9 ou actif.<\/p>\n<p>Et bien qu&rsquo;une extension puisse s&rsquo;activer, elle ne fera rien. Cela peut finalement fournir un niveau de confusion pour l&rsquo;utilisateur.<\/p>\n<p>Dans des cas comme celui-ci, je pense qu&rsquo;il est important de s&rsquo;assurer qu&rsquo;une extension ne peut \u00eatre activ\u00e9e que si le plugin principal est install\u00e9 et actif.<\/p>\n<h2>Activer une extension WooCommerce<\/h2>\n<p>Bien que certaines extensions pour WooCommerce soient similaires \u00e0 d&rsquo;autres, la mise en \u0153uvre de l&rsquo;une \u00e0 l&rsquo;autre peut varier. Autrement dit, la fa\u00e7on dont une extension est \u00e9crite peut utiliser un paradigme enti\u00e8rement diff\u00e9rent de l&rsquo;autre.<\/p>\n<p>Quoi qu&rsquo;il en soit, si vous choisissez de faire quelque chose comme \u00e7a, voici quelque chose \u00e0 consid\u00e9rer :<\/p>\n<ol>\n<li>D\u00e9finissez une classe qui d\u00e9marre au d\u00e9marrage du plugin,<\/li>\n<li>V\u00e9rifiez si WooCommerce est actif,<\/li>\n<li>Si c&rsquo;est le cas, chargez toutes les autres d\u00e9pendances,<\/li>\n<li>Si ce n&rsquo;est pas le cas, d\u00e9sactivez automatiquement le plugin.<\/li>\n<\/ol>\n<p>Cela ressemble \u00e0 beaucoup de travail, mais ce n&rsquo;est pas beaucoup de code. Vous pouvez \u00e9galement envisager d&rsquo;ajouter un avis de plug-in personnalis\u00e9 lorsque l&rsquo;activation est refus\u00e9e, mais je vous expliquerai comment proc\u00e9der dans un prochain article.<\/p>\n<h3>1 D\u00e9finir une classe<\/h3>\n<p>G\u00e9n\u00e9ralement, je pense que c&rsquo;est une bonne id\u00e9e d&rsquo;avoir une fonction pour d\u00e9marrer et pour arr\u00eater le plugin. Si WooCommerce est actif, vous pouvez d\u00e9marrer l&rsquo;int\u00e9gralit\u00e9 de l&rsquo;extension ; sinon, nous devons arr\u00eater son activation.<\/p>\n<p>Pour ce faire, nous pouvons nous connecter au crochet admin_init pour <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-00-extension-for-woocommerce-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">chacune des fonctions<\/a>.<\/p>\n<pre><code>&lt;?php\n\nclass Extension_For_WooCommerce {\n\n    public function init() {\n\n        add_action( 'admin_init', array( $this, 'start') );\n        add_action( 'admin_init', array( $this, 'stop') );\n    }\n}\n<\/code><\/pre>\n<p>Lorsque le plugin est d\u00e9marr\u00e9 \u00e0 partir de l&rsquo;administrateur WordPress, la fonction init devra \u00eatre appel\u00e9e par programme \u00e0 partir de la fonction d&rsquo;entr\u00e9e du plugin principal.<\/p>\n<h3>2 V\u00e9rifiez si WooCommerce est actif<\/h3>\n<p>Avant d&rsquo;impl\u00e9menter l&rsquo;une ou l&rsquo;autre fonction, cependant, nous devons v\u00e9rifier si le plugin WooCommerce est actif. Il est g\u00e9n\u00e9ralement prudent de supposer que WooCommerce est situ\u00e9 dans un r\u00e9pertoire fixe, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-01-is-woocommerce-active-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ce que fait ce code<\/a> :<\/p>\n<pre><code>&lt;?php\n\nprivate function woocommerce_is_active() {\n    return is_plugin_active( 'woocommerce\/woocommerce.php' );\n}<\/code><\/pre>\n<p>Cependant, si WooCommerce est situ\u00e9 ailleurs, vous devrez peut-\u00eatre effectuer d&rsquo;autres v\u00e9rifications jusqu&rsquo;\u00e0 ce que vous le trouviez.<\/p>\n<h3>3 Charger les d\u00e9pendances<\/h3>\n<p>Dans la fonction de d\u00e9marrage, si WooCommerce est actif, nous pouvons <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-03-load-dependencies-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">charger le reste des composants<\/a> du plugin\u00a0:<\/p>\n<pre><code>&lt;?php\n\npublic function start() {\n\n    if (! $this-&gt;woocommerce_is_active()) {\n        return;\n    }\n\n    \/\/ Load dependencies.\n}<\/code><\/pre>\n<p>Mais WooCommerce peut ne pas \u00eatre actif.<\/p>\n<h3>4 ou arr\u00eater l&rsquo;activation<\/h3>\n<p>Et si WooCommerce n&rsquo;est pas actif, alors nous devons <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-04-stop-activation-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">arr\u00eater l&rsquo;activation<\/a> de ce plugin :<\/p>\n<pre><code>&lt;?php\n\npublic function stop() {\n\n    if (! $this-&gt;woocommerce_is_active()) {\n\n        deactivate_plugins( plugin_basename( __FILE__) );\n        unset( $_GET['activate'] ); \/\/ Input var okay.\n    }\n}<\/code><\/pre>\n<p>Notez que m\u00eame si vous effectuez une activation group\u00e9e du plugin ce code, ce code peut ne pas fonctionner. Voici pourquoi:<\/p>\n<ol>\n<li>WordPress passera en revue la liste des plugins qu&rsquo;il doit activer.<\/li>\n<li>Si WooCommerce n&rsquo;a pas \u00e9t\u00e9 activ\u00e9 avant l&rsquo;extension, l&rsquo;extension ne pourra pas s&rsquo;activer.<\/li>\n<\/ol>\n<p>Donc, une autre fa\u00e7on d&rsquo;aborder cela serait d&rsquo;activer WooCommerce s&rsquo;il n&rsquo;est pas d\u00e9j\u00e0 actif.<\/p>\n<h2>Messages personnalis\u00e9s<\/h2>\n<p>Comme mentionn\u00e9 pr\u00e9c\u00e9demment, je pense que c&rsquo;est une bonne id\u00e9e de donner un certain type d&rsquo;avis d&rsquo;administration lorsque l&rsquo;activation du plug-in est refus\u00e9e, mais cela d\u00e9passe le cadre de ce didacticiel.<\/p>\n<p>Quel que soit le cas, le code ci-dessus fournit un moyen de contr\u00f4ler potentiellement l&rsquo;activation d&rsquo;une extension WooCommerce.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lors de la cr\u00e9ation d&rsquo;une extension WooCommerce, il est important de consid\u00e9rer que l&rsquo;utilisateur peut ne pas avoir WooCommerce actif et r\u00e9pondre de mani\u00e8re appropri\u00e9e.<\/p>\n","protected":false},"author":1,"featured_media":223696,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[915,717,811,841,862],"tags":[1167],"class_list":["post-228847","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-autre","category-developpeur","category-plugins-2","category-tutoriels","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/228847","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=228847"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/228847\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/223696"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=228847"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=228847"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=228847"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}