{"id":228993,"date":"2022-10-21T12:29:00","date_gmt":"2022-10-21T09:29:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228993"},"modified":"2022-11-09T05:06:14","modified_gmt":"2022-11-09T02:06:14","slug":"controle-de-ativacao-de-uma-extensao-woocommerce","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/controle-de-ativacao-de-uma-extensao-woocommerce\/","title":{"rendered":"Controle de ativa\u00e7\u00e3o de uma extens\u00e3o WooCommerce"},"content":{"rendered":"\n<p>Ao criar uma extens\u00e3o WooCommerce, \u00e9 importante considerar que quando a extens\u00e3o \u00e9 ativada, o usu\u00e1rio pode n\u00e3o ter o WooCommerce instalado ou ativo.<\/p>\n<p>E embora uma extens\u00e3o possa ser ativada, ela n\u00e3o far\u00e1 nada. Isso pode, em \u00faltima an\u00e1lise, fornecer um n\u00edvel de confus\u00e3o para o usu\u00e1rio.<\/p>\n<p>Em casos como esse, acho importante garantir que uma extens\u00e3o s\u00f3 possa ser ativada se o plug-in principal estiver instalado e ativo.<\/p>\n<h2>Ativando uma extens\u00e3o WooCommerce<\/h2>\n<p>Embora algumas extens\u00f5es para WooCommerce sejam semelhantes a outras, a implementa\u00e7\u00e3o de uma para outra pode variar. Ou seja, a maneira como uma extens\u00e3o \u00e9 escrita pode usar um paradigma totalmente diferente da outra.<\/p>\n<p>Seja qual for o caso, se voc\u00ea optar por fazer algo assim, aqui est\u00e1 algo a considerar:<\/p>\n<ol>\n<li>Defina uma classe que inicie quando o plugin for iniciado,<\/li>\n<li>Verifique se o WooCommerce est\u00e1 ativo,<\/li>\n<li>Se sim, carregue todas as outras depend\u00eancias,<\/li>\n<li>Caso contr\u00e1rio, desative automaticamente o plug-in.<\/li>\n<\/ol>\n<p>Parece muito trabalho, mas n\u00e3o \u00e9 tanto c\u00f3digo. Voc\u00ea tamb\u00e9m pode considerar adicionar um aviso de plug-in personalizado quando a ativa\u00e7\u00e3o for negada, mas abordarei como fazer isso em uma postagem futura.<\/p>\n<h3>1 Defina uma classe<\/h3>\n<p>Geralmente, acho uma boa ideia ter uma fun\u00e7\u00e3o para iniciar e parar o plugin. Se o WooCommerce estiver ativo, voc\u00ea poder\u00e1 iniciar a extens\u00e3o inteira; caso contr\u00e1rio, temos que interromper sua ativa\u00e7\u00e3o.<\/p>\n<p>Para fazer isso, podemos conectar no gancho admin_init para <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-00-extension-for-woocommerce-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cada uma das fun\u00e7\u00f5es<\/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 o plug-in \u00e9 iniciado a partir do administrador do WordPress, a fun\u00e7\u00e3o init precisar\u00e1 ser chamada programaticamente a partir da fun\u00e7\u00e3o de entrada do plug-in principal.<\/p>\n<h3>2 Verifique se o WooCommerce est\u00e1 ativo<\/h3>\n<p>Antes de implementar qualquer fun\u00e7\u00e3o, por\u00e9m, precisamos verificar se o plugin WooCommerce est\u00e1 ativo. Geralmente \u00e9 seguro assumir que o WooCommerce est\u00e1 localizado em um diret\u00f3rio fixo, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-01-is-woocommerce-active-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">que \u00e9 o que este c\u00f3digo faz<\/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>No entanto, se o WooCommerce estiver localizado em outro lugar, talvez seja necess\u00e1rio fazer outras verifica\u00e7\u00f5es at\u00e9 encontr\u00e1-lo.<\/p>\n<h3>3 Carregar as Depend\u00eancias<\/h3>\n<p>Na fun\u00e7\u00e3o de in\u00edcio, se o WooCommerce estiver ativo, podemos <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-03-load-dependencies-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">carregar o restante dos componentes<\/a> do plug-in:<\/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>Mas o WooCommerce pode n\u00e3o estar ativo.<\/p>\n<h3>4 Ou Parar Ativa\u00e7\u00e3o<\/h3>\n<p>E se o WooCommerce n\u00e3o estiver ativo, precisamos <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-04-stop-activation-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">interromper a ativa\u00e7\u00e3o<\/a> deste 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>Observe que mesmo que voc\u00ea fa\u00e7a a ativa\u00e7\u00e3o em massa do plugin deste c\u00f3digo, este c\u00f3digo pode n\u00e3o funcionar. Aqui est\u00e1 o porqu\u00ea:<\/p>\n<ol>\n<li>O WordPress funcionar\u00e1 atrav\u00e9s da lista de plugins que precisa ativar.<\/li>\n<li>Se o WooCommerce n\u00e3o tiver sido ativado antes da extens\u00e3o, a extens\u00e3o n\u00e3o ser\u00e1 ativada.<\/li>\n<\/ol>\n<p>Portanto, outra maneira de abordar isso seria ativar o WooCommerce, se ainda n\u00e3o estiver ativo.<\/p>\n<h2>Mensagens personalizadas<\/h2>\n<p>Como mencionado anteriormente, acho que \u00e9 uma boa ideia fornecer algum tipo de aviso de administra\u00e7\u00e3o quando a ativa\u00e7\u00e3o do plug-in for negada, mas isso est\u00e1 al\u00e9m do escopo deste tutorial.<\/p>\n<p>Seja qual for o caso, o c\u00f3digo acima fornece uma maneira de controlar potencialmente a ativa\u00e7\u00e3o de uma extens\u00e3o WooCommerce.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ao criar uma extens\u00e3o WooCommerce, \u00e9 importante considerar que o usu\u00e1rio pode n\u00e3o ter o WooCommerce ativo e responder adequadamente.<\/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":[722,920,816,846,867],"tags":[1170,1170],"class_list":["post-228993","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desenvolvedor","category-outro","category-plug-ins","category-tutoriais","category-wordpress-8","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/228993","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=228993"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/228993\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/223696"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=228993"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=228993"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=228993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}