{"id":228512,"date":"2022-10-21T12:49:00","date_gmt":"2022-10-21T09:49:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228512"},"modified":"2022-11-09T02:48:10","modified_gmt":"2022-11-08T23:48:10","slug":"activacion-de-control-de-una-extension-de-woocommerce","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/activacion-de-control-de-una-extension-de-woocommerce\/","title":{"rendered":"Activaci\u00f3n de control de una extensi\u00f3n de WooCommerce"},"content":{"rendered":"\n<p>Al crear una extensi\u00f3n de WooCommerce, es importante tener en cuenta que cuando se activa la extensi\u00f3n, es posible que el usuario no tenga WooCommerce instalado o activo.<\/p>\n<p>Y aunque una extensi\u00f3n podr\u00eda activarse, no har\u00e1 nada. En \u00faltima instancia, esto puede proporcionar un nivel de confusi\u00f3n para el usuario.<\/p>\n<p>En casos como este, creo que es importante asegurarse de que una extensi\u00f3n solo se pueda activar si el complemento principal est\u00e1 instalado y activo.<\/p>\n<h2>Activar una extensi\u00f3n de WooCommerce<\/h2>\n<p>Aunque algunas extensiones para WooCommerce son similares a otras, la implementaci\u00f3n de una a otra puede variar. Es decir, la forma en que se escribe una extensi\u00f3n podr\u00eda usar un paradigma completamente diferente a la otra.<\/p>\n<p>En cualquier caso, si opta por hacer algo como esto, aqu\u00ed hay algo que debe considerar:<\/p>\n<ol>\n<li>Defina una clase que comience cuando se inicie el complemento,<\/li>\n<li>Compruebe si WooCommerce est\u00e1 activo,<\/li>\n<li>Si es as\u00ed, cargue todas las dem\u00e1s dependencias,<\/li>\n<li>De lo contrario, desactive autom\u00e1ticamente el complemento.<\/li>\n<\/ol>\n<p>Parece mucho trabajo, pero no es tanto c\u00f3digo. Tambi\u00e9n puede considerar agregar un aviso de complemento personalizado cuando se deniega la activaci\u00f3n, pero cubrir\u00e9 c\u00f3mo hacerlo en una publicaci\u00f3n futura.<\/p>\n<h3>1 Definir una clase<\/h3>\n<p>En general, creo que es una buena idea tener una funci\u00f3n para iniciar y detener el complemento. Si WooCommerce est\u00e1 activo, puede iniciar la extensi\u00f3n completa; de lo contrario, tenemos que detener su activaci\u00f3n.<\/p>\n<p>Para hacer esto, podemos conectarnos al 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 una de las funciones<\/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>Cuando el complemento se inicia desde el administrador de WordPress, la funci\u00f3n de inicio deber\u00e1 llamarse mediante programaci\u00f3n desde la funci\u00f3n de entrada del complemento principal.<\/p>\n<h3>2 Comprobar si WooCommerce est\u00e1 activo<\/h3>\n<p>Sin embargo, antes de implementar cualquiera de las funciones, debemos verificar si el complemento WooCommerce est\u00e1 activo. Por lo general, es seguro asumir que WooCommerce est\u00e1 ubicado en un directorio fijo, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-01-is-woocommerce-active-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">que es lo que hace este c\u00f3digo<\/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>Sin embargo, si WooCommerce se encuentra en otro lugar, es posible que deba realizar otras comprobaciones hasta que lo encuentre.<\/p>\n<h3>3 Cargar las Dependencias<\/h3>\n<p>En la funci\u00f3n de inicio, si WooCommerce est\u00e1 activo, podemos <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-03-load-dependencies-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cargar el resto de los componentes<\/a> para el complemento:<\/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>Pero es posible que WooCommerce no est\u00e9 activo.<\/p>\n<h3>4 O detener la activaci\u00f3n<\/h3>\n<p>Y si WooCommerce no est\u00e1 activo, debemos <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-04-stop-activation-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">detener la activaci\u00f3n<\/a> de este complemento:<\/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>Tenga en cuenta que incluso si realiza una activaci\u00f3n masiva del complemento este c\u00f3digo, es posible que este c\u00f3digo no funcione. Este es el por qu\u00e9:<\/p>\n<ol>\n<li>WordPress trabajar\u00e1 a trav\u00e9s de la lista de complementos que necesita activar.<\/li>\n<li>Si WooCommerce no se activ\u00f3 antes de la extensi\u00f3n, la extensi\u00f3n no se activar\u00e1.<\/li>\n<\/ol>\n<p>Entonces, otra forma de abordar esto ser\u00eda activar WooCommerce si a\u00fan no est\u00e1 activo.<\/p>\n<h2>Mensajes personalizados<\/h2>\n<p>Como se mencion\u00f3 anteriormente, creo que es una buena idea dar alg\u00fan tipo de aviso de administraci\u00f3n cuando se niega la activaci\u00f3n del complemento, pero eso est\u00e1 m\u00e1s all\u00e1 del alcance de este tutorial.<\/p>\n<p>En cualquier caso, el c\u00f3digo anterior proporciona una forma de controlar potencialmente la activaci\u00f3n de una extensi\u00f3n de WooCommerce.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Al crear una extensi\u00f3n de WooCommerce, es importante tener en cuenta que es posible que el usuario no tenga WooCommerce activo y responda adecuadamente.<\/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":[810,716,914,840,861],"tags":[1172],"class_list":["post-228512","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-complementos","category-desarrollador","category-otro","category-tutoriales","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/228512","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=228512"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/228512\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/223696"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=228512"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=228512"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=228512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}