{"id":228401,"date":"2022-10-21T13:06:00","date_gmt":"2022-10-21T10:06:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228401"},"modified":"2022-11-09T02:15:31","modified_gmt":"2022-11-08T23:15:31","slug":"kontroluj-aktywacje-rozszerzenia-woocommerce","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/kontroluj-aktywacje-rozszerzenia-woocommerce\/","title":{"rendered":"Kontroluj aktywacj\u0119 rozszerzenia WooCommerce"},"content":{"rendered":"\n<p>Podczas tworzenia rozszerzenia WooCommerce nale\u017cy wzi\u0105\u0107 pod uwag\u0119, \u017ce gdy rozszerzenie jest aktywowane, u\u017cytkownik mo\u017ce nie mie\u0107 zainstalowanego lub aktywnego WooCommerce.<\/p>\n<p>I chocia\u017c rozszerzenie mo\u017ce si\u0119 aktywowa\u0107, nic nie zrobi. Mo\u017ce to ostatecznie wprowadzi\u0107 u\u017cytkownika w b\u0142\u0105d.<\/p>\n<p>W takich przypadkach uwa\u017cam, \u017ce wa\u017cne jest, aby upewni\u0107 si\u0119, \u017ce rozszerzenie mo\u017ce by\u0107 aktywowane tylko wtedy, gdy g\u0142\u00f3wna wtyczka jest zainstalowana i aktywna.<\/p>\n<h2>Aktywacja rozszerzenia WooCommerce<\/h2>\n<p>Chocia\u017c niekt\u00f3re rozszerzenia dla WooCommerce s\u0105 podobne do innych, implementacja mo\u017ce si\u0119 r\u00f3\u017cni\u0107. Oznacza to, \u017ce spos\u00f3b pisania jednego rozszerzenia mo\u017ce wykorzystywa\u0107 zupe\u0142nie inny paradygmat w drugim.<\/p>\n<p>W ka\u017cdym razie, je\u015bli zdecydujesz si\u0119 zrobi\u0107 co\u015b takiego, oto co\u015b do rozwa\u017cenia:<\/p>\n<ol>\n<li>Zdefiniuj klas\u0119, kt\u00f3ra zaczyna si\u0119 po uruchomieniu wtyczki,<\/li>\n<li>Sprawd\u017a, czy WooCommerce jest aktywne,<\/li>\n<li>Je\u015bli tak, wczytaj wszystkie pozosta\u0142e zale\u017cno\u015bci,<\/li>\n<li>Je\u015bli nie, automatycznie dezaktywuj wtyczk\u0119.<\/li>\n<\/ol>\n<p>Brzmi jak du\u017co pracy, ale to nie jest tak du\u017co kodu. Mo\u017cesz r\u00f3wnie\u017c rozwa\u017cy\u0107 dodanie niestandardowego powiadomienia o wtyczce, gdy aktywacja zostanie odrzucona, ale opisz\u0119, jak to zrobi\u0107 w przysz\u0142ym po\u015bcie.<\/p>\n<h3>1 Zdefiniuj klas\u0119<\/h3>\n<p>Og\u00f3lnie uwa\u017cam, \u017ce dobrym pomys\u0142em jest posiadanie funkcji do uruchamiania i zatrzymywania wtyczki. Je\u015bli WooCommerce jest aktywne, mo\u017cesz uruchomi\u0107 ca\u0142e rozszerzenie; w przeciwnym razie musimy zatrzyma\u0107 jego aktywacj\u0119.<\/p>\n<p>Aby to zrobi\u0107, mo\u017cemy pod\u0142\u0105czy\u0107 si\u0119 do zaczepu admin_init dla <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-00-extension-for-woocommerce-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ka\u017cdej z funkcji<\/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>Gdy wtyczka zostanie uruchomiona z poziomu administratora WordPress, funkcja init b\u0119dzie musia\u0142a zosta\u0107 wywo\u0142ana programowo z funkcji wej\u015bcia g\u0142\u00f3wnej wtyczki.<\/p>\n<h3>2 Sprawd\u017a, czy WooCommerce jest aktywny<\/h3>\n<p>Jednak przed wdro\u017ceniem kt\u00f3rejkolwiek funkcji musimy sprawdzi\u0107, czy wtyczka WooCommerce jest aktywna. Zwykle mo\u017cna bezpiecznie za\u0142o\u017cy\u0107, \u017ce WooCommerce znajduje si\u0119 w sta\u0142ym katalogu <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-01-is-woocommerce-active-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">, co robi ten kod<\/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>Je\u015bli jednak WooCommerce znajduje si\u0119 gdzie indziej, by\u0107 mo\u017ce b\u0119dziesz musia\u0142 przeprowadzi\u0107 inne sprawdzenie, dop\u00f3ki go nie znajdziesz.<\/p>\n<h3>3 Za\u0142aduj zale\u017cno\u015bci<\/h3>\n<p>W funkcji start, je\u015bli WooCommerce jest aktywne, mo\u017cemy <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-03-load-dependencies-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">za\u0142adowa\u0107 pozosta\u0142e komponenty<\/a> wtyczki:<\/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>Ale WooCommerce mo\u017ce nie by\u0107 aktywny.<\/p>\n<h3>4 Lub zatrzymaj aktywacj\u0119<\/h3>\n<p>A je\u015bli WooCommerce nie jest aktywne, musimy <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-04-stop-activation-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">zatrzyma\u0107 aktywacj\u0119<\/a> tej wtyczki:<\/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>Pami\u0119taj, \u017ce nawet je\u015bli wykonasz zbiorcz\u0105 aktywacj\u0119 wtyczki ten kod, ten kod mo\u017ce nie dzia\u0142a\u0107. Dlatego:<\/p>\n<ol>\n<li>WordPress sprawdzi list\u0119 wtyczek, kt\u00f3re musi aktywowa\u0107.<\/li>\n<li>Je\u015bli WooCommerce nie zosta\u0142 aktywowany przed rozszerzeniem, rozszerzenie nie zostanie aktywowane.<\/li>\n<\/ol>\n<p>Innym sposobem podej\u015bcia do tego by\u0142oby aktywowanie WooCommerce, je\u015bli nie jest jeszcze aktywne.<\/p>\n<h2>Wiadomo\u015bci niestandardowe<\/h2>\n<p>Jak wspomniano wcze\u015bniej, uwa\u017cam, \u017ce dobrym pomys\u0142em jest powiadomienie administratora o odmowie aktywacji wtyczki, ale wykracza to poza zakres tego samouczka.<\/p>\n<p>Niezale\u017cnie od przypadku, powy\u017cszy kod zapewnia jeden spos\u00f3b potencjalnej kontroli aktywacji rozszerzenia WooCommerce.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Podczas tworzenia rozszerzenia WooCommerce nale\u017cy wzi\u0105\u0107 pod uwag\u0119, \u017ce u\u017cytkownik mo\u017ce nie mie\u0107 aktywnego WooCommerce i odpowiednio reagowa\u0107.<\/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":[721,919,845,866,815],"tags":[1169],"class_list":["post-228401","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-inny","category-samouczki","category-wordpress-7","category-wtyczki","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/228401","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=228401"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/228401\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/223696"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=228401"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=228401"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=228401"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}