{"id":231439,"date":"2023-01-04T12:58:00","date_gmt":"2023-01-04T09:58:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231439"},"modified":"2022-12-25T21:42:55","modified_gmt":"2022-12-25T18:42:55","slug":"om-funktioner-och-insticksprogram-som-maaste-anvaendas","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/om-funktioner-och-insticksprogram-som-maaste-anvaendas\/","title":{"rendered":"Om funktioner och insticksprogram som m\u00e5ste anv\u00e4ndas"},"content":{"rendered":"\n<p>Jag har arbetat med ett litet projekt, mer av en webbapplikation \u00e4n en webbplats, som har kr\u00e4vt utveckling av b\u00e5de ett anpassat tema och t\u00e4tt kopplade, men mycket specifik funktionalitet.<\/p>\n<p>Det h\u00e4r \u00e4r ett mycket sn\u00e4vt fokuserat projekt (som jag f\u00f6rmodligen kommer att prata om n\u00e5gon g\u00e5ng i framtiden) men n\u00e4r jag arbetar med det har det tvingat mig att g\u00e5 tillbaka till temautvecklingsaspekten av WordPress-utveckling lite.<\/p>\n<p>Nej, jag g\u00f6r ingen design \u2013 tack och lov \u2013 men jag m\u00e5ste arbeta med temaanpassningar ur ett funktionellt perspektiv. Genom att g\u00f6ra detta har det dock f\u00e5tt mig att \u00e5terkomma till de n\u00f6dv\u00e4ndiga <code>functions.php<\/code>och n\u00e5gra \u00f6verv\u00e4ganden som jag aldrig har haft tidigare.<\/p>\n<p>Dessutom har det f\u00e5tt mig att titta djupare p\u00e5 anv\u00e4ndningen av <code>mu-plugins<\/code>och fr\u00e5ga n\u00e4r de \u00e4r n\u00f6dv\u00e4ndiga och varf\u00f6r jag inte har anv\u00e4nt dem mer tidigare (eller ens n\u00e4r man verkligen skulle beh\u00f6va anv\u00e4nda dem).<\/p>\n<p>S\u00e5 jag t\u00e4nker poetisk lite om det.<\/p>\n<pre><code>TL;DR<\/code><\/pre>\n<p>N\u00e4r jag h\u00f6ll p\u00e5 med temautveckling, <code>functions.php<\/code>anv\u00e4ndes det till tv\u00e5 saker (vilket \u00e4r problematiskt i sig) men \u00e4nd\u00e5:<\/p>\n<ol>\n<li>f\u00f6r att aktivera eller inaktivera funktioner i teman,<\/li>\n<li>f\u00f6r att definiera temaspecifik funktionalitet.<\/li>\n<\/ol>\n<p>Theme <a href=\"https:\/\/developer.wordpress.org\/themes\/basics\/theme-functions\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Developer Handbook<\/a> lyder:<\/p>\n<blockquote>\n<p>Filen <code>functions.php<\/code>\u00e4r d\u00e4r du l\u00e4gger till unika funktioner till ditt WordPress-tema. Det kan anv\u00e4ndas f\u00f6r att ansluta till WordPresss k\u00e4rnfunktioner f\u00f6r att g\u00f6ra ditt tema mer modul\u00e4rt, utbyggbart och funktionellt.<\/p>\n<p>Temafunktioner, Handbok f\u00f6r temautvecklare<\/p>\n<\/blockquote>\n<p>Och jag f\u00f6rst\u00e5r det, men ur mitt perspektiv och som WordPress har utvecklats tycker jag att det <code>functions.php<\/code>borde \u00e4gnas \u00e5t temaspecifik funktionalitet n\u00e4r det g\u00e4ller saker som hakar direkt in i k\u00e4rnan som:<\/p>\n<ul>\n<li>anpassarfunktion,<\/li>\n<li>menyfunktioner,<\/li>\n<li>manus- och stilregistrering,<\/li>\n<li>och s\u00e5 vidare.<\/li>\n<\/ul>\n<p>Men om det \u00e4r n\u00e5got som beh\u00f6ver k\u00f6ras under en av krokarna och det \u00e4r mer i linje med dom\u00e4nspecifik logik, s\u00e5 h\u00f6r det <strong>inte<\/strong> hemma i den filen.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158759-61e6e52f7b3b5.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158759-61e6e52f7b3b5.png\" alt=\"Om funktioner och insticksprogram som m\u00e5ste anv\u00e4ndas\" ><\/a><\/p>\n<p>Detta v\u00e4cker dock en fr\u00e5ga: Var finns dom\u00e4nspecifik funktionalitet?<\/p>\n<h3>Ange m\u00e5ste-anv\u00e4nda plugins<\/h3>\n<p>Jag vet att <code>inc<\/code>det blir allt vanligare att se saker som kataloger, men jag bryr mig inte om dem n\u00e4r jag pratar om temautveckling, s\u00e4rskilt n\u00e4r temautveckling inte \u00e4r mitt fokus och den speciella katalogstrukturen inte \u00e4r min stil.<\/p>\n<p>Hur som helst, n\u00e4r det kommer till h\u00f6gspecialiserade l\u00f6sningar (d\u00e4r en l\u00f6sning \u00e4r en kombination av presentation och h\u00e5rt fokuserad funktionalitet) b\u00f6rjar jag fundera p\u00e5 <code>mu-plugins<\/code>.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158759-61e6e536dbfe7.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158759-61e6e536dbfe7.png\" alt=\"Om funktioner och insticksprogram som m\u00e5ste anv\u00e4ndas\" ><\/a><\/p>\n<p>Och anledningen till att jag inte t\u00e4nker p\u00e5 ett standard WordPress-plugin \u00e4r att de i allm\u00e4nhet \u00e4r designade f\u00f6r att fungera med vilket tema som helst och f\u00f6r att l\u00e4gga till funktionalitet. Inte s\u00e5 med <code>mu-plugins<\/code>.<\/p>\n<blockquote>\n<p>M\u00e5ste plugins (alias mu-plugins) \u00e4r plugins installerade i en speciell katalog i inneh\u00e5llsmappen och som automatiskt aktiveras p\u00e5 alla platser i installationen.<\/p>\n<p><a href=\"https:\/\/wordpress.org\/support\/article\/must-use-plugins\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">M\u00e5ste anv\u00e4nda plugins<\/a>, WordPress.org<\/p>\n<\/blockquote>\n<p>S\u00e5 h\u00e4r \u00e4r min tankeprocess:<\/p>\n<ol>\n<li>Teman \u00e4r f\u00f6r presentation<\/li>\n<li>Plugins \u00e4r f\u00f6r funktionalitet.<\/li>\n<li>Plugins \u00e4r designade f\u00f6r att anv\u00e4ndas oavsett ett tema och \u00f6ver en bredd av en webbplats.<\/li>\n<li>Must-Use Plugins \u00e4r plugins som \u00e4r aktiverade och anv\u00e4nds som standard<\/li>\n<li>D\u00e4rf\u00f6r b\u00f6r dom\u00e4nspecifik logik f\u00f6r en specialiserad l\u00f6sning finnas i ett plugin som m\u00e5ste anv\u00e4ndas.<\/li>\n<\/ol>\n<p>Visst kan man s\u00e4ga att vissa teman kan kr\u00e4va funktionalitet som m\u00e5ste anv\u00e4ndas, men passar det inte fortfarande med tanken att funktionaliteten ska finnas i ett plugin som m\u00e5ste anv\u00e4ndas?<\/p>\n<p>Oavsett vilket tillv\u00e4gag\u00e5ngss\u00e4tt som jag har f\u00f6ljt \u00e4r detta:<\/p>\n<ol>\n<li>Funktionalitet som specifikt kopplar temafunktioner till WordPress-k\u00e4rnan g\u00e5r in i <code>functions.php<\/code>.<\/li>\n<li>Funktionalitet som \u00e4r dom\u00e4nlogik men kr\u00e4ver att hela l\u00f6sningen f\u00f6r att fungera finns i en <code>mu-plugin<\/code>.<\/li>\n<\/ol>\n<p>Vid den h\u00e4r tidpunkten <a href=\"https:\/\/tommcfarlin.com\/from-self-employment-to-employment-in-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">i min karri\u00e4r<\/a> g\u00f6r jag inte mycket arbete som fokuserar p\u00e5 n\u00e5got annat \u00e4n backend, men i de s\u00e4llsynta m\u00f6jligheter jag har att ut\u00f6ka det arbete jag g\u00f6r, uppt\u00e4cker jag att jag fortfarande f\u00f6rs\u00f6ker vara som analytisk och eftert\u00e4nksam om hur jag bygger projektet.<\/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>Funktioner och m\u00e5ste-anv\u00e4nda plugins \u00e4r b\u00e5da saker som f\u00f6rtj\u00e4nar att \u00f6verv\u00e4gas, s\u00e4rskilt n\u00e4r man bygger h\u00f6gt specialiserade l\u00f6sningar.<\/p>\n","protected":false},"author":1,"featured_media":158760,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[848,901,922,807,724,868],"tags":[1173],"class_list":["post-231439","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-handledningar","category-koda","category-oevrig","category-php-9","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/231439","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=231439"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/231439\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/158760"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=231439"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=231439"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=231439"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}