{"id":229232,"date":"2022-11-16T19:48:00","date_gmt":"2022-11-16T16:48:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229232"},"modified":"2022-11-09T06:04:55","modified_gmt":"2022-11-09T03:04:55","slug":"wordpress-mallar-foer-nyboerjare-hur-det-aer","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/wordpress-mallar-foer-nyboerjare-hur-det-aer\/","title":{"rendered":"WordPress-mallar f\u00f6r nyb\u00f6rjare: Hur det \u00e4r"},"content":{"rendered":"\n<p>N\u00e4r jag f\u00f6rst b\u00f6rjade fundera p\u00e5 mallar i WordPress t\u00e4nkte jag p\u00e5 tv\u00e5 aspekter:<\/p>\n<ol>\n<li>inneh\u00e5ll specifikt f\u00f6r <a href=\"https:\/\/tommcfarlin.com\/register\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">medlemmar<\/a> ,<\/li>\n<li>inneh\u00e5ll som kan delas upp i ett enda inl\u00e4gg.<\/li>\n<\/ol>\n<p>Men ju mer jag t\u00e4nkte p\u00e5 det, desto mer ins\u00e5g jag att det kunde (och utan tvekan borde) f\u00f6rklaras under loppet av n\u00e5gra inl\u00e4gg.<\/p>\n<p>S\u00e5 jag kommer att bryta ner det nuvarande tillst\u00e5ndet f\u00f6r WordPress-mallar och sedan praktiska s\u00e4tt vi kan ta, organisera, s\u00e4g, v\u00e5ra plugins s\u00e5 att vi anv\u00e4nder standard PHP.<\/p>\n<p>Efter det ska jag i en framtida serie titta p\u00e5 vad det inneb\u00e4r att anv\u00e4nda andra mallmotorer (b\u00e5de PHP och JavaScript i det arbete vi g\u00f6r).<\/p>\n<p>Till att b\u00f6rja med vill jag dock ta en titt p\u00e5 hur vi ofta ser mallar skrivna inom ramen f\u00f6r b\u00e5de WordPress-teman och plugins.<\/p>\n<h2>WordPress-mallar f\u00f6r nyb\u00f6rjare<\/h2>\n<p>Beroende p\u00e5 din erfarenhet av WordPress och andra PHP-baserade system \u00e4r din definition av mall annorlunda \u00e4n n\u00e5gon annans.<\/p>\n<p>S\u00e5 f\u00f6r att f\u00f6rs\u00f6ka skapa en gemensam definition som jag kommer att anv\u00e4nda under den h\u00e4r serien av inl\u00e4gg kommer att anv\u00e4ndas <a href=\"https:\/\/codex.wordpress.org\/Templates\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">fr\u00e5n WordPress Codex:<\/a><\/p>\n<blockquote>\n<p>Mallar \u00e4r filerna som styr hur din WordPress-webbplats kommer att visas p\u00e5 webben.<\/p>\n<\/blockquote>\n<p>Sidan forts\u00e4tter med att prata om hur det fungerar tillsammans med databasen och andra tillg\u00e5ngar, och jag rekommenderar att du l\u00e4ser om det om du inte \u00e4r bekant med det.<\/p>\n<p>Definitionen ovan fungerar dock bra f\u00f6r hur jag t\u00e4nker g\u00e5 vidare n\u00e4r jag t\u00e4nker p\u00e5 det.<\/p>\n<h3>1 Hur det \u00e4r (just nu)<\/h3>\n<p>N\u00e4r det g\u00e4ller att t\u00e4nka p\u00e5 WordPress-mallar, tror jag att det hj\u00e4lper att \u00f6verv\u00e4ga en enda mall som med kod som <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2c02b22272f645076f7f735bd61a4034#file-00-content-container-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ser ut ungef\u00e4r s\u00e5 h\u00e4r:<\/a><\/p>\n<pre><code>&lt;div id=\"content-container\"&gt;\n\n  &lt;p&gt;\n    Oh! The garbage chute was a really wonderful idea. What an incredible smell you've discovered! Let's get out of here! \n    Get away from there... No! wait! Will you forget it? I already tried it. It's magnetically sealed! Put that \n    thing away! You're going to get us all killed.\n  &lt;\/p&gt;\n\n  &lt;h2&gt;List of Post Titles For Acme Post Type&lt;\/h2&gt;\n  &lt;?php\n  $args = array(\n    'post_status'    =&gt; 'publish',\n    'post_type'      =&gt; 'acme',\n    'posts_per_page' =&gt; '10'\n  );\n  $custom_query = new WP_Query( $args );\n\n  if ($custom_query-&gt;have_posts()) {\n    echo '&lt;ul&gt;';\n    while ($custom_query-&gt;have_posts()) {\n      $custom_query-&gt;the_post();\n      echo '&lt;li&gt;'. get_the_title(). '&lt;\/li&gt;';\n    }\n    echo '&lt;\/ul&gt;';\n    wp_reset_postdata();\n  }\n  ?&gt;\n\n  &lt;p&gt;\n    Absolutely, Your Worship. Look, I had everything under control until you led us down here. You know, it's not \n    going to take them long to figure out what happened to us. It could be worst... It's worst. \n    There's something alive in here! That's your imagination. Something just moves past my leg! \n    Look! Did you see that? What? Help!\n  &lt;\/p&gt;\n\n&lt;\/div&gt;&lt;!-- #content-container --&gt;<\/code><\/pre>\n<p>Po\u00e4ngen med koden ovan \u00e4r att du ser \u00e4r att den blandar PHP och HTML.<\/p>\n<p>Dessutom \u00e4r det viktigt att notera att var och en av dessa filer \u00e4r utformade med CSS och kan ha ytterligare beteende kontrollerat via JavaScript. F\u00f6r det \u00e4ndam\u00e5let kan du f\u00f6rest\u00e4lla det s\u00e5 h\u00e4r:<\/p>\n<p>Detta representerar en enda mall som blandar b\u00e5de HTML och PHP till en enda mall. Och den mallen formateras sedan med CSS och styrs med JavaScript.<\/p>\n<p>Alla dessa fungerar tillsammans f\u00f6r att ge vad det \u00e4r som anv\u00e4ndaren ser.<\/p>\n<h3>2 F\u00e5r utvecklarorganisationen prestanda?<\/h3>\n<p>Men s\u00e4ttet som det h\u00e4r fungerar p\u00e5 \u00e4r lite r\u00f6rigt, och \u00e4ven om det kan se bra ut f\u00f6r anv\u00e4ndaren v\u00e4cker det n\u00e5gra fr\u00e5gor:<\/p>\n<ul>\n<li>\u00c4r den s\u00e5 presterande som den kan vara?<\/li>\n<li>Hur l\u00e4tt \u00e4r det f\u00f6r en utvecklare att underh\u00e5lla?<\/li>\n<li>Vad \u00e4r byggprocessen?<\/li>\n<li>hur underh\u00e5lls och organiseras tillg\u00e5ngarna?<\/li>\n<\/ul>\n<p>Visst, det mesta av det du l\u00e4ser ovan \u00e4r v\u00e4ldigt utvecklarcentrerat, men jag tycker att n\u00e4r en kod \u00e4r organiserad p\u00e5 ett s\u00e5dant s\u00e4tt att det \u00e4r l\u00e4tt f\u00f6r utvecklare att arbeta med kan det ofta vara enkelt \u00e4nnu snabbare f\u00f6r anv\u00e4ndaren.<\/p>\n<p>Vad betyder det dock?<\/p>\n<ul>\n<li>Presenterar vi Sass?<\/li>\n<li>Minifierar vi JavaScript?<\/li>\n<li>Hur kombinerar vi dessa tillg\u00e5ngar och importerar dem?<\/li>\n<li>Hur \u00e4r det med de anpassade PHP-fr\u00e5gor som sker inom ramen f\u00f6r varje mall?<\/li>\n<\/ul>\n<p>Och \u00e4ven om de f\u00f6rsta sakerna \u00e4r viktiga och v\u00e4rda det (och jag kanske tar upp i en serie efter detta), kan separering av logik inifr\u00e5n en mall \u00e4ven utan en mallmotor hj\u00e4lpa till att g\u00f6ra koden mer utvecklarcentrerad.<\/p>\n<p>G\u00f6r det saker snabbare f\u00f6r anv\u00e4ndaren? Inte n\u00f6dv\u00e4ndigtvis. Men det hj\u00e4lper oss att ta det f\u00f6rsta steget i att g\u00f6ra just det.<\/p>\n<h2>L\u00e5t oss omorganiseras<\/h2>\n<p>I n\u00e4sta inl\u00e4gg i den h\u00e4r serien kommer jag att bryta ner inneh\u00e5ll vi \u00e4r vana vid att se i WordPress-mallar genom ett exempel och b\u00f6rja omorganisera det s\u00e5 att det blir b\u00e4ttre organiserat p\u00e5 ett s\u00e5dant s\u00e4tt att teknikerna kan anv\u00e4ndas i olika projekt.<\/p>\n<p>Detta inneb\u00e4r att flytta saker till deras funktioner (eller till och med inom deras klasser och d\u00e4rmed deras funktioner) och hur vi kan anropa dem inom ramen f\u00f6r v\u00e5ra mallar.<\/p>\n<p>I slut\u00e4ndan kommer detta att leda till kod som \u00e4r l\u00e4ttare att l\u00e4sa, b\u00e4ttre separering av bekymmer och f\u00f6ra oss mot s\u00e4tt att \u00e4ndra hur data injiceras i en mall.<\/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>Mallar \u00e4r s\u00e4ttet som data visas f\u00f6r anv\u00e4ndaren, men hur kan vi ta WordPress-mallar och f\u00f6rb\u00e4ttra deras organisation f\u00f6r anv\u00e4ndare och utvecklare?<\/p>\n","protected":false},"author":1,"featured_media":223990,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[932,848,901,868],"tags":[1173],"class_list":["post-229232","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aemnen","category-handledningar","category-koda","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/229232","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=229232"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/229232\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/223990"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=229232"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=229232"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=229232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}