{"id":230363,"date":"2022-12-09T17:39:00","date_gmt":"2022-12-09T14:39:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230363"},"modified":"2022-12-09T18:41:12","modified_gmt":"2022-12-09T15:41:12","slug":"oeverkonstruera-inte-loesningen","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/oeverkonstruera-inte-loesningen\/","title":{"rendered":"\u00d6verkonstruera inte l\u00f6sningen"},"content":{"rendered":"\n<p>Om du kommer fr\u00e5n en objektorienterad bakgrund eller f\u00f6rs\u00f6ker bygga alla dina l\u00f6sningar f\u00f6r WordPress med hj\u00e4lp av objektorienterade tekniker, kommer det att finnas tillf\u00e4llen d\u00e5 det kan k\u00e4nnas som att du sl\u00e5r en spik med en sl\u00e4gga.<\/p>\n<p>L\u00e5t oss till exempel s\u00e4ga att n\u00e5gon kommer till dig och beh\u00f6ver utveckla ett anpassat plugin som fungerar med ett tredjeparts plugin men det beh\u00f6ver bara g\u00f6ra en sak.<\/p>\n<p>\u00c4r det v\u00e4rt att ta sig tid att skapa ett <strong><a href=\"https:\/\/wordpress.mediadoma.com\/sv\/abstrakta-klasser-del-2-abstrakta-klasser-och-graenssnitt\/\" title=\"gr\u00e4nssnitt\">gr\u00e4nssnitt<\/a><\/strong>, implementera n\u00e4mnda gr\u00e4nssnitt i en konkret klass, st\u00e4lla in <strong><a href=\"https:\/\/wordpress.mediadoma.com\/sv\/organisera-wordpress-typer-vyer-och-prenumeranter\/\" title=\"prenumeranter\">prenumeranter<\/a><\/strong>, <strong><a href=\"https:\/\/wordpress.mediadoma.com\/sv\/en-snabb-anteckning-om-enhetstestningskod-i-wordpress-projekt\/\" title=\"skriva enhetstester\">skriva enhetstester<\/a><\/strong> och s\u00e5 vidare?<\/p>\n<p>Jag kan se \u00f6verklagandet, men jag s\u00e4ger generellt nej. Om k\u00e4rnan i vad du beh\u00f6ver g\u00f6ra m\u00e5ste inkludera stilar eller JavaScript-filer eller b\u00e5da, varf\u00f6r inte lita p\u00e5 de inbyggda WordPress API:erna och procedurprogrammering?<\/p>\n<h2>\u00d6verkonstruera inte<\/h2>\n<p>L\u00e5t oss s\u00e4ga att en potentiell kund kommer till dig som:<\/p>\n<ul>\n<li>arbetar med en mycket sn\u00e4v budget,<\/li>\n<li>har ett plugin fr\u00e5n tredje part som inte passar bra med temat,<\/li>\n<li>beh\u00f6ver bara l\u00e4tt styling,<\/li>\n<li>och har pengar f\u00f6r att anlita dig f\u00f6r arbetet.<\/li>\n<\/ul>\n<p>F\u00f6rutsatt att allt ovanst\u00e5ende \u00e4r sant, skulle jag s\u00e4ga att det verkar enkelt att arbeta igenom l\u00f6sningen, eller hur? Vi m\u00e5ste granska webbplatsen s\u00e5 att vi kan:<\/p>\n<ul>\n<li>best\u00e4mma f\u00e4rgschemat,<\/li>\n<li>hitta n\u00f6dv\u00e4ndiga v\u00e4ljare f\u00f6r CSS,<\/li>\n<li>b\u00f6rja sedan bygga plugin-programmet.<\/li>\n<\/ul>\n<p>Nu n\u00e4r det g\u00e4ller att g\u00f6ra detta f\u00f6rs\u00f6ker jag fortfarande anv\u00e4nda en handfull b\u00e4sta praxis. \u00c4ven om jag tenderar mot objektorienterad programmering, anv\u00e4nder jag det inte alltid och rekommenderar det inte alltid.<\/p>\n<p>Ist\u00e4llet tror jag att det fungerar bra att anv\u00e4nda en enkel funktion eller upps\u00e4ttning funktioner kopplade till WordPress API p\u00e5 ett procedurm\u00e4ssigt s\u00e4tt. Det betyder dock inte att vi inte b\u00f6r str\u00e4va efter att skapa en solid filorganisationsstruktur eftersom du aldrig vet n\u00e4r du kan beh\u00f6va komma tillbaka f\u00f6r att underh\u00e5lla projektet.<\/p>\n<p>F\u00f6r det \u00e4ndam\u00e5let \u00e4r det h\u00e4r vad jag normalt g\u00f6r:<\/p>\n<ul>\n<li>skapa en tillg\u00e5ngskatalog f\u00f6r stilmallar och JavaScript (f\u00f6r b\u00e5da eller en av de andra \u2013 beroende p\u00e5 vad som \u00e4r n\u00f6dv\u00e4ndigt),<\/li>\n<li>skapa en <strong>src-<\/strong> katalog f\u00f6r koden som kommer att ansvara f\u00f6r att ansluta till WordPress,<\/li>\n<li>l\u00e4gg till den vanliga <strong>LICENS-, README-<\/strong> och plugin-bootstrap-filen.<\/li>\n<\/ul>\n<p>Den resulterande katalogen kan se ut ungef\u00e4r s\u00e5 h\u00e4r:<\/p>\n<p>D\u00e4rifr\u00e5n bryr jag mig inte ens om en autoloader. Ist\u00e4llet inkluderar jag filerna i k\u00e4llkatalogen. Du kan iterera genom dessa filer j\u00e4mf\u00f6rt med att g\u00f6ra n\u00e5got <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/8d4e8a93a673d86f44d39c6e2893530e#file-00-bootstrap-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">s\u00e5 h\u00e4r<\/a><\/strong> :<\/p>\n<pre><code>&lt;?php\n\/**\n * Acme Plugin Example\n *\n * @author    Tom McFarlin &lt;tom@pressware.co&gt;\n * @license   GPL-3.0+\n * @link      https:\/\/pressware.co\n * @since     1.0.0\n * @copyright 2018 Tom McFarlin\n *\n * @wordpress-plugin\n * Plugin Name: Acme Plugin Example\n * Description: Provides consistent styling across the site for certain elements.\n * Version:     1.0.0\n * Author:      Tom McFarlin\n * Author URI:  https:\/\/tommcfarlin.com\n * License:     GPL-3.0+\n * License URI: http:\/\/www.gnu.org\/licenses\/gpl-3.0.txt\n *\/\n\ninclude_once plugin_dir_path(__FILE__).'src\/AddStyles.php';\ninclude_once plugin_dir_path(__FILE__).'src\/AddScripts.php';\n<\/code><\/pre>\n<p>Men det kan bero p\u00e5 n\u00e4r och vad du g\u00f6r.<\/p>\n<h2>Det h\u00e4r \u00e4r f\u00f6r enkelt<\/h2>\n<p>Kanske. S\u00e5 h\u00e4r \u00e4r det: N\u00e4rhelst en person blir f\u00f6rankrad i att anv\u00e4nda ett visst programmeringsparadigm, f\u00f6rs\u00f6ker personen att till\u00e4mpa det \u00f6verallt och f\u00f6rs\u00f6ker g\u00f6ra det hela tiden.<\/p>\n<p>Inte alla, men m\u00e5nga. Jag sj\u00e4lv inklusive.<\/p>\n<p>Och n\u00e4r du kommer p\u00e5 att du \u00f6verarbetar n\u00e5got, varf\u00f6r inte ta ett steg tillbaka och f\u00f6rs\u00f6ka g\u00f6ra din arbetsb\u00f6rda lite enklare?<\/p>\n<p>Problemet \u00e4r fortfarande l\u00f6st, och det g\u00f6rs p\u00e5 ett s\u00e4tt som har betydligt mindre omkostnader.<\/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>Om k\u00e4rnan i vad du beh\u00f6ver g\u00f6ra m\u00e5ste vara att inkludera stilar eller JavaScript-filer eller b\u00e5da, \u00f6verkonstruera inte en l\u00f6sning mer \u00e4n n\u00f6dv\u00e4ndigt.<\/p>\n","protected":false},"author":1,"featured_media":236233,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[901,807,724,868],"tags":[1173],"class_list":["post-230363","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-koda","category-php-9","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230363","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=230363"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230363\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/236233"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=230363"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=230363"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=230363"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}