{"id":229274,"date":"2022-10-21T12:29:00","date_gmt":"2022-10-21T09:29:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229274"},"modified":"2022-11-09T06:15:03","modified_gmt":"2022-11-09T03:15:03","slug":"controlla-lattivazione-di-unestensione-woocommerce","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/controlla-lattivazione-di-unestensione-woocommerce\/","title":{"rendered":"Controlla l&#8217;attivazione di un&#8217;estensione WooCommerce"},"content":{"rendered":"\n<p>Quando si crea un&#8217;estensione WooCommerce, \u00e8 importante considerare che quando l&#8217;estensione viene attivata, l&#8217;utente potrebbe non avere WooCommerce installato o attivo.<\/p>\n<p>E sebbene un&#8217;estensione possa attivarsi, non far\u00e0 nulla. Questo pu\u00f2 in definitiva fornire un livello di confusione per l&#8217;utente.<\/p>\n<p>In casi come questo, penso che sia importante assicurarsi che un&#8217;estensione possa essere attivata solo se il plug-in principale \u00e8 installato e attivo.<\/p>\n<h2>Attivazione di un&#8217;estensione WooCommerce<\/h2>\n<p>Sebbene alcune estensioni per WooCommerce siano simili ad altre, l&#8217;implementazione da una all&#8217;altra pu\u00f2 variare. Cio\u00e8, il modo in cui viene scritta un&#8217;estensione potrebbe utilizzare un paradigma completamente diverso dall&#8217;altro.<\/p>\n<p>In ogni caso, se scegli di fare qualcosa del genere, ecco qualcosa da considerare:<\/p>\n<ol>\n<li>Definisci una classe che inizi all&#8217;avvio del plugin,<\/li>\n<li>Verifica se WooCommerce \u00e8 attivo,<\/li>\n<li>In tal caso, carica tutte le altre dipendenze,<\/li>\n<li>In caso contrario, disattivare automaticamente il plug-in.<\/li>\n<\/ol>\n<p>Sembra un sacco di lavoro, ma non \u00e8 molto codice. Potresti anche prendere in considerazione l&#8217;aggiunta di un avviso di plug-in personalizzato quando l&#8217;attivazione viene negata, ma tratter\u00f2 come farlo in un post futuro.<\/p>\n<h3>1 Definisci una classe<\/h3>\n<p>In generale, penso che sia una buona idea avere una funzione per avviare e fermare il plugin. Se WooCommerce \u00e8 attivo, puoi avviare l&#8217;intera estensione; in caso contrario, dobbiamo interrompere la sua attivazione.<\/p>\n<p>Per fare ci\u00f2, possiamo agganciarci all&#8217;hook admin_init per <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-00-extension-for-woocommerce-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ciascuna delle funzioni<\/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>Quando il plug-in viene avviato dall&#8217;amministratore di WordPress, la funzione init dovr\u00e0 essere chiamata a livello di codice dalla funzione di immissione del plug-in principale.<\/p>\n<h3>2 Controlla se WooCommerce \u00e8 attivo<\/h3>\n<p>Prima di implementare una delle due funzioni, per\u00f2, dobbiamo verificare se il plugin WooCommerce \u00e8 attivo. Di solito \u00e8 sicuro presumere che WooCommerce si trovi in \u200b\u200buna directory fissa, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-01-is-woocommerce-active-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">che \u00e8 ci\u00f2 che fa questo codice<\/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>Tuttavia, se WooCommerce si trova altrove, potrebbe essere necessario eseguire altri controlli finch\u00e9 non lo trovi.<\/p>\n<h3>3 Caricare le dipendenze<\/h3>\n<p>Nella funzione di avvio, se WooCommerce \u00e8 attivo, possiamo <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-03-load-dependencies-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">caricare il resto dei componenti<\/a> per il plugin:<\/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>Ma WooCommerce potrebbe non essere attivo.<\/p>\n<h3>4 Oppure Interrompi attivazione<\/h3>\n<p>E se WooCommerce non \u00e8 attivo, dobbiamo <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-04-stop-activation-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">interrompere l&#8217;attivazione<\/a> di questo 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>Tieni presente che anche se esegui l&#8217;attivazione in blocco del plug-in questo codice, questo codice potrebbe non funzionare. Ecco perch\u00e9:<\/p>\n<ol>\n<li>WordPress funzioner\u00e0 attraverso l&#8217;elenco dei plugin che deve attivare.<\/li>\n<li>Se WooCommerce non \u00e8 stato attivato prima dell&#8217;estensione, l&#8217;estensione non si attiva.<\/li>\n<\/ol>\n<p>Quindi un altro modo per affrontare questo sarebbe attivare WooCommerce se non \u00e8 gi\u00e0 attivo.<\/p>\n<h2>Messaggi personalizzati<\/h2>\n<p>Come accennato in precedenza, penso che sia una buona idea fornire un tipo di avviso amministrativo quando l&#8217;attivazione del plug-in viene negata, ma questo va oltre lo scopo di questo tutorial.<\/p>\n<p>In ogni caso, il codice sopra fornisce un modo per controllare l&#8217;attivazione di un&#8217;estensione WooCommerce potenzialmente.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quando si crea un&#8217;estensione WooCommerce, \u00e8 importante considerare che l&#8217;utente potrebbe non avere WooCommerce attivo e rispondere in modo appropriato.<\/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":[918,814,720,844,865],"tags":[1168,1168],"class_list":["post-229274","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-altro","category-plugin-2","category-sviluppatore","category-tutorial","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229274","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=229274"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229274\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/223696"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=229274"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=229274"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=229274"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}