{"id":228337,"date":"2022-10-21T13:17:00","date_gmt":"2022-10-21T10:17:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228337"},"modified":"2022-11-09T01:56:11","modified_gmt":"2022-11-08T22:56:11","slug":"styr-aktivering-av-ett-woocommerce-tillaegg","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/styr-aktivering-av-ett-woocommerce-tillaegg\/","title":{"rendered":"Styr aktivering av ett WooCommerce-till\u00e4gg"},"content":{"rendered":"\n<p>N\u00e4r du skapar ett WooCommerce-till\u00e4gg \u00e4r det viktigt att t\u00e4nka p\u00e5 att n\u00e4r till\u00e4gget \u00e4r aktiverat kanske anv\u00e4ndaren inte har WooCommerce installerat eller aktivt.<\/p>\n<p>Och \u00e4ven om ett till\u00e4gg kan aktiveras, kommer det inte att g\u00f6ra n\u00e5gonting. Detta kan i slut\u00e4ndan ge en niv\u00e5 av f\u00f6rvirring f\u00f6r anv\u00e4ndaren.<\/p>\n<p>I s\u00e5dana h\u00e4r fall tror jag att det \u00e4r viktigt att se till att en till\u00e4gg endast kan aktiveras om k\u00e4rnpluginen \u00e4r installerad och aktiv.<\/p>\n<h2>Aktivera en WooCommerce-till\u00e4gg<\/h2>\n<p>\u00c4ven om vissa till\u00e4gg f\u00f6r WooCommerce liknar andra, kan implementeringen fr\u00e5n den ena till den andra variera. Det vill s\u00e4ga, s\u00e4ttet som en till\u00e4gg skrivs kan anv\u00e4nda ett helt annat paradigm, det andra.<\/p>\n<p>Hur som helst, om du v\u00e4ljer att g\u00f6ra n\u00e5got s\u00e5nt h\u00e4r, h\u00e4r \u00e4r n\u00e5got att t\u00e4nka p\u00e5:<\/p>\n<ol>\n<li>Definiera en klass som startar n\u00e4r plugin-programmet startar,<\/li>\n<li>Kontrollera om WooCommerce \u00e4r aktiv,<\/li>\n<li>Om s\u00e5 \u00e4r fallet, ladda sedan alla andra beroenden,<\/li>\n<li>Om inte, avaktivera insticksprogrammet automatiskt.<\/li>\n<\/ol>\n<p>Det l\u00e5ter som mycket jobb, men det \u00e4r inte s\u00e5 mycket kod. Du kanske ocks\u00e5 vill \u00f6verv\u00e4ga att l\u00e4gga till ett anpassat pluginmeddelande n\u00e4r aktivering nekas men jag kommer att t\u00e4cka hur man g\u00f6r det i ett framtida inl\u00e4gg.<\/p>\n<h3>1 Definiera en klass<\/h3>\n<p>Generellt tycker jag att det \u00e4r en bra id\u00e9 att ha en funktion f\u00f6r att starta och stoppa plugin. Om WooCommerce \u00e4r aktivt kan du starta hela till\u00e4gget; annars m\u00e5ste vi stoppa dess aktivering.<\/p>\n<p>F\u00f6r att g\u00f6ra detta kan vi koppla in admin_init-kroken f\u00f6r <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-00-extension-for-woocommerce-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">var och en av funktionerna<\/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>N\u00e4r plugin-programmet startas fr\u00e5n WordPress-admin, kommer init-funktionen att beh\u00f6va anropas programmatiskt fr\u00e5n huvudpluginens ing\u00e5ngsfunktion.<\/p>\n<h3>2 Kontrollera om WooCommerce \u00e4r aktiv<\/h3>\n<p>Innan vi implementerar n\u00e5gon av funktionerna m\u00e5ste vi dock kontrollera om WooCommerce-pluginet \u00e4r aktivt. Det \u00e4r vanligtvis s\u00e4kert att anta att WooCommerce finns i en fast katalog <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-01-is-woocommerce-active-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">vilket \u00e4r vad den h\u00e4r koden g\u00f6r<\/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>Men om WooCommerce finns n\u00e5gon annanstans kan du beh\u00f6va g\u00f6ra n\u00e5gon annan kontroll tills du hittar den.<\/p>\n<h3>3 Ladda beroenden<\/h3>\n<p>I startfunktionen, om WooCommerce \u00e4r aktiv, kan vi <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-03-load-dependencies-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ladda resten av komponenterna<\/a> f\u00f6r 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>Men WooCommerce kanske inte \u00e4r aktiv.<\/p>\n<h3>4 Eller Stoppa aktivering<\/h3>\n<p>Och om WooCommerce inte \u00e4r aktivt m\u00e5ste vi <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1096d100351054b84ec778a516dde2f6#file-04-stop-activation-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">stoppa aktiveringen<\/a> av detta 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>Observera att \u00e4ven om du massaktiverar insticksprogrammet denna kod, kanske den h\u00e4r koden inte fungerar. H\u00e4r \u00e4r varf\u00f6r:<\/p>\n<ol>\n<li>WordPress kommer att arbeta igenom listan \u00f6ver plugins som det beh\u00f6ver aktivera.<\/li>\n<li>Om WooCommerce inte har aktiverats f\u00f6re till\u00e4gget kommer till\u00e4gget inte att aktiveras.<\/li>\n<\/ol>\n<p>S\u00e5 ett annat s\u00e4tt att n\u00e4rma sig detta skulle vara att aktivera WooCommerce om det inte redan \u00e4r aktivt.<\/p>\n<h2>Anpassade meddelanden<\/h2>\n<p>Som n\u00e4mnts tidigare tycker jag att det \u00e4r en bra id\u00e9 att ge n\u00e5gon typ av administrationsmeddelande n\u00e4r aktivering av plugin nekas, men det ligger utanf\u00f6r den h\u00e4r handledningens omfattning.<\/p>\n<p>Oavsett vilket \u00e4r koden ovan ett s\u00e4tt att kontrollera aktiveringen av ett WooCommerce-till\u00e4gg potentiellt.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>N\u00e4r du skapar ett WooCommerce-till\u00e4gg \u00e4r det viktigt att t\u00e4nka p\u00e5 att anv\u00e4ndaren kanske inte har WooCommerce aktiv och svarar p\u00e5 l\u00e4mpligt s\u00e4tt.<\/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":[848,922,818,724,868],"tags":[1173],"class_list":["post-228337","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-handledningar","category-oevrig","category-plugins-3","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/228337","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=228337"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/228337\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/223696"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=228337"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=228337"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=228337"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}