<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Andrea Barghigiani</title>
    <description>The latest articles on DEV Community by Andrea Barghigiani (@andreabarghigiani).</description>
    <link>https://dev.to/andreabarghigiani</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F83779%2F9329a3bd-aa2a-4447-9a04-d4713fa58a8c.jpeg</url>
      <title>DEV Community: Andrea Barghigiani</title>
      <link>https://dev.to/andreabarghigiani</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/andreabarghigiani"/>
    <language>en</language>
    <item>
      <title>The no BS guide to show your impact with XYZ Framework</title>
      <dc:creator>Andrea Barghigiani</dc:creator>
      <pubDate>Tue, 21 Apr 2026 09:40:19 +0000</pubDate>
      <link>https://dev.to/andreabarghigiani/the-no-bs-guide-to-show-your-impact-with-xyz-framework-f3g</link>
      <guid>https://dev.to/andreabarghigiani/the-no-bs-guide-to-show-your-impact-with-xyz-framework-f3g</guid>
      <description>&lt;p&gt;How many times have you lost a promotion because you weren't able to describe your contributions to a project? Or even worse, has it never happened that you couldn't quickly present the impact you had with your last team during an interview?&lt;/p&gt;

&lt;p&gt;I know the feeling, because I felt it more times than I'd like to admit. &lt;/p&gt;

&lt;p&gt;For most of my career all that mattered was the quality of my code and how clear I was able to produce commits and documentation for my team.&lt;/p&gt;

&lt;p&gt;While this made me &lt;em&gt;"famous"&lt;/em&gt; around colleagues, it didn't help to spread my name in management. The people my promotion depended on almost didn't even know that I existed.&lt;/p&gt;

&lt;p&gt;And this is mostly because I didn't pick up the habit to &lt;strong&gt;track my contributions,&lt;/strong&gt; relying only on my memory. And it didn't help much. &lt;/p&gt;

&lt;p&gt;Keeping track of your contributions is probably the most important aspect of your work as engineer, otherwise you'll be among the 90% that suffer from memory fade. &lt;/p&gt;

&lt;p&gt;You can't expect your manager to check the PR description that you crafted for your team.&lt;/p&gt;

&lt;p&gt;That's why in this article I want to talk to you about a framework, that Google used internally, that will help you not only to pick up the habit of keeping all your contributions in the same place but will help you translate our tech-jargon into clear goals relevant for the business.&lt;/p&gt;

&lt;h2&gt;
  
  
  Aren't frameworks full of fluff?
&lt;/h2&gt;

&lt;p&gt;Let me just say: &lt;strong&gt;not everyone.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As a fellow engineer I do share with you doubts about the need to apply a framework while describing our successes, but the thing is similar as when we learn a new language, if we're serious about our career growth we have to adapt the way we share our accomplishments.&lt;/p&gt;

&lt;p&gt;Let's put this into practice. Read this out loud: &lt;em&gt;"Improved search feature."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As an engineer I am pretty sure your first question was &lt;em&gt;"how?"&lt;/em&gt; We are more curious about what the improvement was and how it was applied, than the business implication behind it.&lt;/p&gt;

&lt;p&gt;And that's fine, you're an engineer after all and you want to learn new things and help your teammates. But when you want to share your wins among other departments you have to write the information in a way that is gonna be easily understandable by them. Try to read the following: &lt;em&gt;"Reduced search latency by 65%, increasing user retention 12% by implementing Elasticsearch caching."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;How does it sound? Do you think that even less technical people will be able to understand the impact of your work?&lt;/p&gt;

&lt;p&gt;I think so. &lt;/p&gt;

&lt;p&gt;Let's dive a bit deeper into the structure of this message.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's this XYZ?
&lt;/h2&gt;

&lt;p&gt;The XYZ formula is a three-part structure for describing impact: &lt;strong&gt;Accomplished [X] as measured by [Y] by doing [Z]&lt;/strong&gt;. Google popularized it. Engineering teams at Dropbox, GitLab, and most high-growth startups now expect it in performance reviews and resumes.&lt;/p&gt;

&lt;p&gt;Here's why it works: it forces you to translate tasks into &lt;strong&gt;outcomes with proof attached.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Most engineers list what they did. &lt;/p&gt;

&lt;p&gt;High-performers list what changed.&lt;/p&gt;

&lt;p&gt;And not what changed in terms of the amount of lines, or metrics that are tightly connected with our code. High-performers are able to understand what the business really takes care of. In the example above, they don't care if you implemented &lt;em&gt;Elasticsearch caching&lt;/em&gt;, their main interest goes to the &lt;strong&gt;increase of user retention&lt;/strong&gt; that this implementation was able to bring. You added &lt;em&gt;Elasticsearch&lt;/em&gt; almost for fun, and to let other departments know that you master such technology.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Formula in Practice
&lt;/h2&gt;

&lt;p&gt;Let's try with another example. You've just implemented new CI templates and parallelization to cut deployment times, how would you add it in your brag document?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Worked on CI/CD improvements to speed up deployment time."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That's it? Outside your team, who even knows what a CI is?&lt;/p&gt;

&lt;p&gt;But the thing is that you &lt;strong&gt;have to&lt;/strong&gt; make these accomplishments understandable from someone that doesn't know our entire tech stack. So in order to do so we have to think about how we can implement the XYZ formula, here's how I reason about when I want to translate one of my contributions in a way that everyone can understand.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;What It Answers&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;What outcome happened?&lt;/td&gt;
&lt;td&gt;"Increased deployment frequency 2x"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Y&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;How do you know?&lt;/td&gt;
&lt;td&gt;"Cut build times 25%"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Z&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;What did you actually do?&lt;/td&gt;
&lt;td&gt;"Introduced CI templates and parallelized jobs"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Now that we have done this exercise, making it more understandable is the easy part: &lt;em&gt;"Cut build times 25% by introducing CI templates and parallelized jobs, enabling a 2x increase in daily deployment frequency."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Compare that to the previous, don't you think that's a great improvement?&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters for Performance Reviews
&lt;/h2&gt;

&lt;p&gt;If you are working in a company that is taking care of you and wants to know how you improve inside the company, you most likely have at least a couple of performance reviews per year.&lt;/p&gt;

&lt;p&gt;The issue is that managers handle dozens of engineers at once. Your job is to hand them a structured, evidence-based narrative they can defend in that room.&lt;/p&gt;

&lt;h3&gt;
  
  
  The "Chores vs. Wins" Problem
&lt;/h3&gt;

&lt;p&gt;Engineers often write: &lt;em&gt;"I was busy this quarter: fixed bugs, attended standups, reviewed PRs."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Management hears: &lt;em&gt;"This person performed their job description."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;What they need to hear: &lt;em&gt;"This person moved the needle on company goals."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That's your main goal with a brag document: show off how you helped the company in reaching their goals task after task. Letting them know that you mastered a new framework is not relevant for the type of goals they have to track.&lt;/p&gt;

&lt;h3&gt;
  
  
  Finding the right balance with the 70/30 Rule
&lt;/h3&gt;

&lt;p&gt;I know what you're thinking: &lt;em&gt;I can't list all my contributions following this formula, it is simply impossible.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And I do agree with that, part of our work &lt;strong&gt;needs to live in learning.&lt;/strong&gt; We need to learn new concepts, frameworks or simply keep up to date our knowledge; otherwise we will be outdated in the next few years.&lt;/p&gt;

&lt;p&gt;What I am trying to say here though is that we need to find the right balance, and as in many other cases the Pareto Principle here plays a great role (even though we changed it slightly).&lt;/p&gt;

&lt;p&gt;Here's how to balance an effective self-evaluation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;70%&lt;/strong&gt; concrete wins with metrics&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;30%&lt;/strong&gt; genuine growth areas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Connect both to quarterly objectives or team KPIs. This shows you're not just completing tasks but driving the company's mission.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quantifying "Glue Work"
&lt;/h2&gt;

&lt;p&gt;As we just stated, not all impact is quantifiable—especially because not all impact happens in code.&lt;/p&gt;

&lt;p&gt;During your career you'll frequently find yourself mentoring colleagues, improving processes, or participating in cross-functional initiatives. These aren't easy to quantify, but if you want to make a good impression you have to do it anyway.&lt;/p&gt;

&lt;p&gt;Here's how to think through each type and transform vague descriptions into XYZ bullets that actually land.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mentorship
&lt;/h3&gt;

&lt;p&gt;Let's say you spent six months helping a junior engineer get up to speed. Your instinct might be to write:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; &lt;em&gt;"Mentored junior team members and helped them grow."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Nice. But grow how? And who cares?&lt;/p&gt;

&lt;p&gt;Ask yourself: what changed because of your mentorship? Did they ship features independently? Did they start reviewing others' code? Did team velocity improve once they stopped blocking on you?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt; &lt;em&gt;"Mentored 2 junior engineers to independent project ownership through weekly 1:1s and pair programming, increasing team project completion rate 20% as they began owning features without escalation."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Notice what happened here. The Z (weekly 1:1s, pair programming) is the activity everyone does. The Y (20% completion rate increase) and X (independent ownership) are what &lt;strong&gt;actually matter&lt;/strong&gt; to management.&lt;/p&gt;

&lt;h3&gt;
  
  
  Process Improvements
&lt;/h3&gt;

&lt;p&gt;You automated something boring that was eating everyone's time. Your first draft:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; &lt;em&gt;"Built automation scripts to improve team efficiency."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Okay, but what was the cost of &lt;em&gt;not&lt;/em&gt; having automation? And what did "efficiency" actually mean?&lt;/p&gt;

&lt;p&gt;Think in terms of time returned, errors prevented, or frustration reduced. Can you count hours saved per week? Did error rates drop because humans were removed from the loop?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt; &lt;em&gt;"Automated vendor payment reconciliation workflow, eliminating 40 man-hours of manual data entry monthly and reducing payment processing errors 15%."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The Z here is specific (vendor payment reconciliation). The Y has two metrics—hours saved and error reduction. The X is implied: more reliable operations with less manual labor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cross-Functional Coordination
&lt;/h3&gt;

&lt;p&gt;You played the diplomat between teams that don't usually talk to each other. Your default description:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; &lt;em&gt;"Facilitated communication between engineering and product teams."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Everyone says this. It means nothing.&lt;/p&gt;

&lt;p&gt;What was the actual outcome? Did a project ship faster because you resolved blockers? Did feature quality improve because requirements got clarified earlier? Did you prevent a deadline slip?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt; &lt;em&gt;"Coordinated launch initiative between engineering, product, and design teams by implementing shared project dashboard and weekly syncs, delivering high-priority mobile feature 2 weeks ahead of schedule with 30% fewer post-launch bugs."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here the Z shows you didn't just "facilitate"—you built infrastructure (dashboard, syncs). The Y has speed (2 weeks early) and quality (30% fewer bugs). The X is hitting a business deadline that mattered.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Pattern for Glue Work
&lt;/h3&gt;

&lt;p&gt;Every time you do work that doesn't produce a commit, ask three questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;What was broken before?&lt;/strong&gt; (Context for why your effort mattered)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What did you actually build/change?&lt;/strong&gt; (Your Z—specific tools, processes, structures)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What became possible after?&lt;/strong&gt; (Your X and Y—time saved, people unblocked, risks avoided)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Glue work only looks invisible if you describe it vaguely. Get specific about the mechanism you created and the downstream effects it produced.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building Your Brag Sheet
&lt;/h2&gt;

&lt;p&gt;Don't wait for review season. Track monthly:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Projects completed&lt;/strong&gt; → What metrics changed?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Technical decisions&lt;/strong&gt; → What alternatives did you reject and why?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collaboration&lt;/strong&gt; → Who did you unblock? What processes did you improve?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mentorship&lt;/strong&gt; → Who leveled up because of you?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Pull from: calendars, project trackers, commit history, incident post-mortems, Slack threads where you solved problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Reference: XYZ Builder
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Template:&lt;/strong&gt; &lt;em&gt;Accomplished [X] as measured by [Y] by doing [Z]&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; &lt;em&gt;"Improved search features"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt; &lt;em&gt;"Reduced search latency 65% (Y) by implementing Elasticsearch caching (Z), resulting in 12% improvement in user retention (X)"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Checklist for every bullet:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Starts with outcome (X), not activity&lt;/li&gt;
&lt;li&gt;[ ] Includes a number (Y): %, $, time, count&lt;/li&gt;
&lt;li&gt;[ ] Describes specific technical action (Z)&lt;/li&gt;
&lt;li&gt;[ ] Could pass through an ATS without buzzwords&lt;/li&gt;
&lt;li&gt;[ ] Answers "so what?" without requiring explanation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;The XYZ framework isn't resume decoration; &lt;strong&gt;it's a professional habit.&lt;/strong&gt; Engineers who master it don't just do good work; they make that work legible to the people who decide on promotions, budgets, and hiring.&lt;/p&gt;

&lt;p&gt;Start with your last three projects. Rewrite them as XYZ bullets. Put them in front of a manager or peer. If they ask follow-up questions, your Y isn't strong enough. If they glaze over, your X isn't concrete enough. Iterate until the impact is undeniable.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Tool for the Habit
&lt;/h2&gt;

&lt;p&gt;Here's the problem: you won't remember the details three months from now. That 65% latency improvement? You'll recall you &lt;em&gt;did something&lt;/em&gt; with search, but the exact metric, the technical approach, the business outcome? All of it fades. &lt;/p&gt;

&lt;p&gt;I've been there. &lt;/p&gt;

&lt;p&gt;That's actually why I started building &lt;strong&gt;CareerCraft.ing&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It's a personal vault that captures your wins as they happen; PRs, commits, mentorship moments, process improvements. An MCP server extracts impact from your workflow &lt;strong&gt;only when you trigger it.&lt;/strong&gt; No background scraping, no surveillance. Then the XYZ engine transforms your raw notes into the kind of bullets that actually get read.&lt;/p&gt;

&lt;p&gt;Because tracking your career shouldn't be another chore. It should be automatic.&lt;/p&gt;

&lt;p&gt;I will release &lt;a href="https://careercraft.ing/" rel="noopener noreferrer"&gt;this tool&lt;/a&gt; in Q2. In the meantime, use the XYZ framework to build your brag sheet and subscribe to the waitlist.&lt;/p&gt;

</description>
      <category>career</category>
      <category>careerdevelopment</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Consigli allo sviluppatore web per creare un forte posizionamento.</title>
      <dc:creator>Andrea Barghigiani</dc:creator>
      <pubDate>Tue, 18 Feb 2020 11:34:09 +0000</pubDate>
      <link>https://dev.to/andreabarghigiani/consigli-allo-sviluppatore-web-per-creare-un-forte-posizionamento-20m3</link>
      <guid>https://dev.to/andreabarghigiani/consigli-allo-sviluppatore-web-per-creare-un-forte-posizionamento-20m3</guid>
      <description>&lt;p&gt;Trovare il giusto posizionamento è un'attività incredibilmente importante per qualsiasi professionista e per lo sviluppatore web è ancora più importante!&lt;/p&gt;

&lt;p&gt;In questo video troverai alcuni suggerimenti che devi assolutamente mettere in pratica se vuoi differenziarti dalla concorrenza e ottenere i clienti che ti meriti.&lt;/p&gt;

&lt;p&gt;Abbiamo anche lanciato un &lt;strong&gt;corso gratuito&lt;/strong&gt; dal titolo: &lt;a href="https://skillsandmore.org/landing-corsi/dal-niente-al-cliente-in-meno-di-un-mese/"&gt;Dal niente al cliente - Trova il tuo cliente ideale in 15 giorni&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vieni a scoprire le importanti lezioni che puoi apprendere e ricordati di iscriverti sul nostro &lt;a href="https://www.youtube.com/user/skillsAndMore"&gt;canale YouTube&lt;/a&gt; per restare aggiornato con gli ultimi consigli.&lt;/p&gt;

</description>
      <category>freelancer</category>
      <category>webdev</category>
      <category>marketing</category>
      <category>business</category>
    </item>
    <item>
      <title>Perché dovresti prendere in considerazione Genesis</title>
      <dc:creator>Andrea Barghigiani</dc:creator>
      <pubDate>Mon, 15 Apr 2019 06:52:08 +0000</pubDate>
      <link>https://dev.to/andreabarghigiani/perche-dovresti-prendere-in-considerazione-genesis-2dmh</link>
      <guid>https://dev.to/andreabarghigiani/perche-dovresti-prendere-in-considerazione-genesis-2dmh</guid>
      <description>&lt;p&gt;Sviluppi con WordPress da diversi anni e nella creazione dei temi hai sempre scelto &lt;code&gt;_s&lt;/code&gt; come starter theme? Forse non è la scelta migliore…&lt;/p&gt;

&lt;p&gt;Iniziare il proprio lavoro di &lt;a href="https://skillsandmore.org/starter-theme-wordpress/"&gt;sviluppo temi con uno starter theme&lt;/a&gt; è sicuramente una mossa intelligente, soprattutto se ci troviamo a muovere i primi passi all’interno di una piattaforma che non padroneggiamo completamente.&lt;/p&gt;

&lt;p&gt;In fin dei conti avere a disposizione uno starter theme ci permette di &lt;strong&gt;conoscere da vicino come viene creato un tema WordPress&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Si investono molte nottate a studiare tutto il codice, le funzioni e le logiche che giudano lo starter theme per poi…&lt;/p&gt;

&lt;p&gt;Rimuoverne metà perché il nostro progetto è molto semplice!&lt;/p&gt;

&lt;p&gt;Personalmente mi sono trovato molte (forse troppe) volte in questa condizione.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--S4vCJtpr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2019/04/rimozione-codice-starter-theme.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--S4vCJtpr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2019/04/rimozione-codice-starter-theme.jpg" alt="Usando uno starter theme si rischia sempre di dover rimuovere gran parte del codice utilizzato." width="880" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Negli anni ho avuto anche la cattiva idea di &lt;strong&gt;usare diversi starter theme&lt;/strong&gt; e nonostante trovassi ogni volta i benefici appena descritti, la fine era sempre la stessa.&lt;/p&gt;

&lt;p&gt;Dovevo rimuovere il codice che non utilizzavo!&lt;/p&gt;

&lt;p&gt;Questo perché, un po’ come i temi multipurpose su ThemeForest, uno starter theme &lt;strong&gt;deve aiutare lo sviluppatore a creare velocemente un nuovo tema&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Il problema è che non sapendo &lt;strong&gt;cosa deve realizzare&lt;/strong&gt; lo sviluppatore, lo starter theme si trova nella scomoda posizione di includere il più possibile lasciando da parte le cose più opinionabili: come per esempio i CSS!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/share?text=Gli+%23startertheme+di+%23WordPress+sono+incredibilmente+utili+per+velocizzare+il+nostro+lavoro%2C+peccato+che+nel+90%25+dei+casi+dobbiamo+rimuovere+tutto+il+codice+che+non+viene+utilizzato+e+i+%23CSS+sono+praticamente+inesistenti.&amp;amp;via=skillandmore&amp;amp;url=https://skillsandmore.org/genesis-scelta-framework/?utm_source=twitter&amp;amp;utm_medium=Social&amp;amp;utm_campaign=SocialWarfare"&gt;Gli starter theme di WordPress sono incredibilmente utili per velocizzare il nostro lavoro, peccato che nel 90% dei casi dobbiamo rimuovere tutto il codice che non viene utilizzato e i CSS sono praticamente inesistenti.Click To Tweet&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Peccato che i CSS sono, almeno per il mio punto di vista, &lt;strong&gt;uno degli aiuti più importanti&lt;/strong&gt; che uno sviluppatore potrebbe avere!&lt;/p&gt;

&lt;p&gt;Portriamo però a termine questo mio piccolo &lt;em&gt;rant&lt;/em&gt; perché non mi sto affatto lamentando, tutto quello che hai letto fino ad ora mi è servito per &lt;em&gt;“preparare il terreno”&lt;/em&gt; per descriverti come sono arrivato alla conclusione che leggerai più avanti.&lt;/p&gt;

&lt;p&gt;Attenzione, link di affiliazione presenti.&lt;/p&gt;

&lt;p&gt;Mi sembra giusto avvisarti che i link che puntano verso StudioPress o il framework Genesis sono &lt;strong&gt;link di affiliazione&lt;/strong&gt;. A te non cambia nulla mentre io farò qualche euro se decidi di acquistare.  &lt;/p&gt;

&lt;p&gt;Se la cosa non ti piace puoi sempre fare copia/incolla del seguente link: &lt;code&gt;https://www.studiopress.com/&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Perché hai bisogno di un framework
&lt;/h2&gt;

&lt;p&gt;Con la sezione precedente penso di averti fatto capito che, per quanto apprezzi gli starter theme, oggi non li uso più.&lt;/p&gt;

&lt;p&gt;Preferisco non usarli perché &lt;strong&gt;ho trovato una soluzione che soddisfa le mie esigenze&lt;/strong&gt; , una soluzione che mi offre una &lt;em&gt;code base&lt;/em&gt; solida e che al tempo stesso non si mette tra i piedi facendomi risparmiare tempo.&lt;/p&gt;

&lt;p&gt;Ho trovato un framework!&lt;/p&gt;

&lt;p&gt;Se ancora non sai cosa sia un framework dedicato allo sviluppo di temi WordPress ecco la mia definizione non ufficiale:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Un framework non è altro che un insieme di &lt;em&gt;“aiuti”&lt;/em&gt; che mirano a rendere &lt;strong&gt;più semplice la vita dello sviluppatore&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;Andrea Barghigiani&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ovviamente la mia scelta, &lt;a href="https://dev.to/genesis"&gt;Genesis&lt;/a&gt;, non è l’unico framework creato per questo scopo ma è quello che ho deciso di utilizzare per molti motivi, quelli dedicati allo sviluppo sono solo una parte.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kkG1c7MJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2019/04/genesis-semplifica-lavoro.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kkG1c7MJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2019/04/genesis-semplifica-lavoro.jpg" alt="Io scelgo Genesis perché è un framework che rispetta le strutture di WordPress semplificando il mio lavoro." width="880" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esistono framework che includono di tutto.&lt;/p&gt;

&lt;p&gt;Framework che non si concentrano soltanto sullo sviluppo di un tema ma che inseriscono funzionalità avanzate sia nel backend che nel frontend, a mio avviso queste funzionalità dovrebbero far parte di un plugin…&lt;/p&gt;

&lt;p&gt;Avere a che fare con framework così “potenti” mi ha sempre fatto preoccupare un po’.&lt;/p&gt;

&lt;p&gt;Eppure il framwork dovrebbe essere una cosa semplice che si posiziona tra il nostro WordPress e l’aspetto frontend di un tema.&lt;/p&gt;

&lt;p&gt;Un framework deve fornire le sue funzionalità &lt;strong&gt;basandosi sull’infrastruttura sulla quale si appoggia&lt;/strong&gt; , non dovrebbe rivoluzionarla.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wUlKXwja--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2019/04/cosa-framework.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wUlKXwja--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2019/04/cosa-framework.jpg" alt="" width="880" height="327"&gt;&lt;/a&gt;Come StudioPress definisce il suo framework Genesis.&lt;/p&gt;

&lt;p&gt;Io ho scelto Genesis perché rispecchia questo fondamentale aspetto.&lt;/p&gt;

&lt;p&gt;Negli anni abbiamo visto moltissimi framework nascere (e morire) perché non rispettavano questo concetto fondamentale.&lt;/p&gt;

&lt;p&gt;Come succede nei linguaggi di programmazione dove esistono decine di framework, queste soluzioni &lt;strong&gt;aggiungono nuove funzionalità al linguaggio&lt;/strong&gt; ma utilizzano sempre le strutture che gli sono state fornite alla partenza.&lt;/p&gt;

&lt;p&gt;Se un framework modifica le logiche base di un linguaggio perde la capacità di essere chiamato in questo modo.&lt;/p&gt;

&lt;p&gt;Sarebbe soltanto un nuovo linguaggio.&lt;/p&gt;

&lt;h2&gt;
  
  
  Perché ti consiglio di scegliere Genesis come framework?
&lt;/h2&gt;

&lt;p&gt;Arriviamo al vero punto cruciale di questo articolo: perché ti sto consigliando Genesis?&lt;/p&gt;

&lt;p&gt;Te lo sto consigliando perché se lo acquisterai passando da uno dei miei link potrò guadagnare qualcosa con l’affiliazione?&lt;/p&gt;

&lt;p&gt;Assolutamente no!&lt;/p&gt;

&lt;p&gt;Utilizzo il mio link di affiliazione perché sto parlando di un progetto commerciale e non trovo niente di male se guadagno qualche euro dal tuo acquisto.&lt;/p&gt;

&lt;p&gt;Ti consiglio Genesis perché &lt;strong&gt;credo veramente&lt;/strong&gt; che sia il miglior framework in circolazione.&lt;/p&gt;

&lt;p&gt;Però non voglio che tu creda alla mia parola soltanto perché l’hai letta su questo sito.&lt;/p&gt;

&lt;p&gt;Quello che desidero è che &lt;strong&gt;tu sia in grado di prendere una scelta con la tua testa&lt;/strong&gt; e per fare questo condividerò con te le motivazioni che mi hanno spinto ad acquistare il piano &lt;a href="https://skillsandmore.org/genesis-pro"&gt;Pro Plus&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Di seguito troverai alcune delle mie risposte ai temi più caldi che ho sentito pronunciare quando mi sono confrontato con altri sviluppatori ma prima di affrontarli voglio condividere con te quelli che considero essere i punti a favore nella mia scelta.&lt;/p&gt;

&lt;p&gt;Se poi vuoi condividere la tua opinione con il sottoscritto e con i lettori di questo blog la sezione dei commenti è al tuo servizio.&lt;/p&gt;

&lt;h3&gt;
  
  
  Genesis è qua per restare!
&lt;/h3&gt;

&lt;p&gt;Se poco più di un anno fa mi avessi chiesto quali fossero i miei sentimenti nei confronti di &lt;a href="https://dev.to/genesis-themes"&gt;StudioPress&lt;/a&gt; e del suo framework Genesis ti avrei detto:&lt;/p&gt;

&lt;p&gt;Adoro il framework ma non so dove vuol andare l’azienda.&lt;/p&gt;

&lt;p&gt;Per lavoro utilizzo Genesis da più di 3 anni e lo conosco per sentito dire da più di 6.&lt;/p&gt;

&lt;p&gt;Ho visto le sue diverse trasformazioni e durante il 2017 e il 2018 avevo notato che &lt;strong&gt;i rilasci del framework si erano rallentati&lt;/strong&gt; e che l’azienda stava cercando modi alternativi per monetizzare.&lt;/p&gt;

&lt;p&gt;StudioPress è una delle prime (se non la prima) theme shop apparse nel web, forse se oggi ci sono tante aziende che vendono temi WordPress il merito è anche di Brian Gardner (il fondatore).&lt;/p&gt;

&lt;p&gt;Essere i primi a volte significa fare delle scelte sbagliate.&lt;/p&gt;

&lt;p&gt;Una delle scelte sbagliate che sono state fatte è &lt;strong&gt;non impostare un abbonamento&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Hai capito bene.&lt;/p&gt;

&lt;p&gt;Se vai su StudioPresss e &lt;a href="https://dev.to/genesis-themes"&gt;acquisti uno dei suoi child theme&lt;/a&gt; (basta anche il &lt;a href="https://skillsandmore.org/genesis"&gt;solo framework&lt;/a&gt;) oltre ad ottenere la versione odierna del tema &lt;strong&gt;avrai accesso a vita anche ai futuri aggiornamenti&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Io sono stato testimone di questa realizzazione perché negli anni ho visto nascere soluzioni dove &lt;em&gt;Copyblogger Media&lt;/em&gt; (l’azienda alle spalle di StudioPress e altri servizi) cercava di trasformare queste vendite in un &lt;strong&gt;guadagno ricorrente&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Il primo tentativo fu fatto creando la piattaforma Rainmaker e poi promuovendo l’opzione StudioPress Sites, una soluzione che integrava Genesis al potente hosting gestito dalla stessa azienda.&lt;/p&gt;

&lt;p&gt;Per un certo periodo StudioPress stava valutanto anche la possibilità di inserire un &lt;strong&gt;rinnovo annuale&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;Per fortuna niente di tutto questo è successo. Anzi per StudioPress le cose sono andate ancora meglio!&lt;/p&gt;

&lt;p&gt;StudioPress è stata &lt;a href="https://wpengine.com/blog/why-wp-engine-is-acquiring-studiopress/"&gt;acquisita da WP Engine&lt;/a&gt; 🎉&lt;/p&gt;

&lt;p&gt;Se non la conosci, WP Engine è un’azienda che offre ottimi piani di hosting dedicati a WordPress e per amplicare la propria offerta e ritagliarsi una fetta di mercato ha scelto di acquisire StudioPress con tutti i suoi dipendenti.&lt;/p&gt;

&lt;p&gt;Parlando di hosting &lt;a href="https://dev.to/siteground"&gt;io preferisco SiteGround&lt;/a&gt; ma questa è una storia per un altro articolo.&lt;/p&gt;

&lt;p&gt;Spero di averti fatto capire che StudioPress e di conseguenza Genesis ormai sono qua per restare e &lt;strong&gt;rappresentano un importante punto di riferimento nell’ecosistema WordPress&lt;/strong&gt; vantando più di 200.000 clienti con più di 500.000 siti attivi.&lt;/p&gt;

&lt;h3&gt;
  
  
  Genesis è in continuo sviluppo
&lt;/h3&gt;

&lt;p&gt;Continuando a parlare delle motivazioni che mi continuano a convincermi nei confronti dell’&lt;a href="https://dev.to/genesis"&gt;utilizzo di Genesis&lt;/a&gt; bisogna dire che, soprattutto dopo l’acquisizione, questo framework è tornato in attivo sviluppo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9YmKdgiC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2019/04/wpengine-acquisisce-studiopress.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9YmKdgiC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2019/04/wpengine-acquisisce-studiopress.jpg" alt="Da quando WP Engine ha acquisito StudioPress il team di sviluppo è molto più veloce negli aggiornamenti." width="880" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Genesis sta per raggiungere la versione 2.10 e c’è da dire che negli ultimi rilasci sono state rilasciate funzionalità davvero interessanti, soprattutto per noi sviluppatori!&lt;/p&gt;

&lt;p&gt;Una delle funzionalità più interessanti è stata l’integrazione di un sistema di onboarding esclusivo.&lt;/p&gt;

&lt;p&gt;Sicuramente implementare un sistema di onboarding è molto più utile agli sviluppatori di temi Genesis che vengono venduti attraverso un marketplace ma è comunque una &lt;strong&gt;figata pazzesca&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GurxW0K4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2019/04/genesis-onboarding.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GurxW0K4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2019/04/genesis-onboarding.png" alt="" width="880" height="561"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All’installazione di un child theme Genesis che supporta questa funzionalità il nostro utente si troverà di fronte questo benvenuto che gli consentirà di installare i plugin necessari e importare il contenuti di esempio.&lt;/p&gt;

&lt;p&gt;Tempo fa parlammo proprio di una caratteristica simile con la &lt;a href="https://skillsandmore.org/richiedi-plugin-per-tema-tgm-plugin-activation/"&gt;TGM Activation Library&lt;/a&gt; ma è incredibilmente più bello vedere queste funzionalità all’interno del framework che stiamo utilizzando.&lt;/p&gt;

&lt;p&gt;Gli aggiornamenti su Genesis non terminano certo qua, tornerò a parlare più avanti di quelli più interessanti perché il prossimo punto che voglio condividere con te lo ritengo ancora più importante.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ottimizzazioni SEO a portata di mano
&lt;/h3&gt;

&lt;p&gt;So benissimo che al giorno d’oggi non esiste tema che non dichiara &lt;em&gt;“SEO optimized”&lt;/em&gt; o qualcosa del genere.&lt;/p&gt;

&lt;p&gt;Il problema principale è che non riusciamo a capire &lt;strong&gt;quanto&lt;/strong&gt; il tema è stato ottimizzato per la SEO e soprattutto quali sono gli strumenti che ci vengono forniti per adattare questa ottimizzaizione alle nostre necessità.&lt;/p&gt;

&lt;p&gt;Il problema di molti temi che si vendono come &lt;em&gt;SEO optimized&lt;/em&gt; è che usano questi termini soltanto come una feature.&lt;/p&gt;

&lt;p&gt;Un aspetto che il loro tema ha esclusivamente.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/share?text=Qualsiasi+tema+%23WordPress+dovrebbe+essere+ottimizzato+per+la+%23SEO%21+E+invece+si+nota+che+non+%C3%A8+cos%C3%AC.+Per+questo+io+preferisco+usare+%23genesiswp+%F0%9F%92%AA&amp;amp;via=skillandmore&amp;amp;url=https://skillsandmore.org/genesis-scelta-framework/?utm_source=twitter&amp;amp;utm_medium=Social&amp;amp;utm_campaign=SocialWarfare"&gt;La realtà è che oggi qualsiasi tema dovrebbe essere ottimizzato per la SEO.Click To Tweet&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;È semplicemente un &lt;em&gt;byproduct&lt;/em&gt; dell’essere uno sviluppatore di temi.&lt;/p&gt;

&lt;p&gt;Quello che Genesis fa di diverso è che &lt;strong&gt;offre degli strumenti per personalizzare le ottimizzazioni SEO&lt;/strong&gt; in base alle nostre necessità.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3Zxa0UZI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2019/04/genesis-schemaorg.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3Zxa0UZI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2019/04/genesis-schemaorg.jpg" alt="Con Genesis ottimizzare lo Schema.org delle tue pagine è un gioco da ragazzi. Basta conoscere il giusto hook." width="880" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se non conosci questo aspetto, il framework Genesis offre dei filter hook per personalizzare lo Schema.org presente nelle nostre pagine, te ne parlo nel dettaglio in &lt;a href="https://skillsandmore.org/genesis-semantica-schemaorg/"&gt;questo articolo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Oltre a questo gli strumenti integrati dedicati alla SEO &lt;strong&gt;vengono disattivati automaticamente&lt;/strong&gt; se si installa un plugin più specifico come Yoast SEO. Questo ci permette di eseguire soltanto il codice necessario.&lt;/p&gt;

&lt;h3&gt;
  
  
  Un framework basato sulla piattaforma
&lt;/h3&gt;

&lt;p&gt;All’inizio di questo articolo ti ho confessato le mie frustrazioni quando vedo un framework che cerca di reinventare la ruota.&lt;/p&gt;

&lt;p&gt;Framework che cercando di prendere l’approccio iniziale nello sviluppo WordPress e lo stravolgono perché pensano di aver trovato la soluzione perfetta.&lt;/p&gt;

&lt;p&gt;Ogni volta che vedo un framework del genere mi chiedo: &lt;em&gt;perché non avviano un proprio CMS?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Voglio dire, se la struttura sulla quale ti basi non ti piace, perché utilizzarla?&lt;/p&gt;

&lt;p&gt;Forse perché oggi &lt;a href="https://w3techs.com/technologies/overview/content_management/all"&gt;WordPress copre più di un terzo del web&lt;/a&gt;?&lt;/p&gt;

&lt;p&gt;Quello che apprezzo nel lavoro svolto dagli sviluppatori Genesis è che &lt;strong&gt;basano il proprio framework sulla struttura sulla quale si basano&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Genesis infatti rispetta al 100% la WordPress way e fa un grande uso degli hook che questo CMS mette a disposizione.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5-smHq9n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2019/04/genesis-wordpress-hook.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5-smHq9n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2019/04/genesis-wordpress-hook.jpg" alt="A differenza di molti framework io apprezzo Genesis perché si basa sul sistema di Hook già presente in WordPress." width="880" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quello che apprezzo nel lavoro svolto dagli sviluppatori Genesis è che &lt;strong&gt;basano il proprio framework sulla struttura sulla quale si basano&lt;/strong&gt;. Genesis infatti rispetta al 100% la WordPress way e fa un grande uso degli hook che questo CMS mette a disposizione.&lt;/p&gt;

&lt;p&gt;Ti ho già parlato di quanto sia bello sviluppare con Genesis e come sia possibile fare affidamento alle sue strutture per creare i propri child theme.&lt;/p&gt;

&lt;p&gt;Sto anche valutando la creazione di un corso dedicato quindi se sei interessato non ti dimenticare di commentare questo articolo!&lt;/p&gt;

&lt;h3&gt;
  
  
  Una community affiatata pronta ad aiutarti
&lt;/h3&gt;

&lt;p&gt;Quello che ancora non ti ho detto è che &lt;strong&gt;la community intorno a Genesis è veramente fantastica!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Acquistando anche solo il framework avrai accesso al forum privato dove troverai tutte le risposte che desideri.&lt;/p&gt;

&lt;p&gt;In molti casi non avrai neanche bisogno di pubblicare la tua domanda perché ti basterà una semplice ricerca per trovare decine di utenti che hanno già incontrato e risolto il tuo stesso problema.&lt;/p&gt;

&lt;p&gt;Con oltre 50.000 discussioni pubblicate troverai sicuramente quello che stai cercando.&lt;/p&gt;

&lt;p&gt;Ma il materiale dedicato a Genesis non finisce qua!&lt;/p&gt;

&lt;p&gt;Dall’acquisizione di WP Engine il team di sviluppatori ha aperto una GitHub Page dove &lt;a href="https://studiopress.github.io/genesis/"&gt;condivide esclusivamente materiale dedicato agli sviluppatori&lt;/a&gt;, il sito StudioPress presenta una &lt;a href="https://my.studiopress.com/category/customization/snippets/"&gt;generosissima sezione dedicata alla documentazione&lt;/a&gt; e per finire esistono decine di gruppi Facebook dedicati al framework, con il più importante che conta più di &lt;strong&gt;10.000 utenti&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;Se scegli Genesis non sarai mai solo 😂&lt;/p&gt;

&lt;h3&gt;
  
  
  Un child theme per ogni esigenza
&lt;/h3&gt;

&lt;p&gt;L’ultimo vantaggio che voglio discutere con te nella scelta di Genesis è proprio la grande scelta di child theme che offre&lt;/p&gt;

&lt;p&gt;Come dicevo prima nella mia &lt;em&gt;critica&lt;/em&gt; contro gli starter theme, se utilizziamo queste soluzioni abbiamo nel 99% dei casi un tema privo di qualsiasi stile. Tutto il codice che troviamo al loro interno è codice PHP.&lt;/p&gt;

&lt;p&gt;La componente CSS si limita, al massimo, nell’implementare un sistema di griglie. Oggi anche inutile grazie alle &lt;a href="https://skillsandmore.org/css-grid-layout/"&gt;CSS Grid&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Per fortuna che con Genesis tutto è diverso!&lt;/p&gt;

&lt;p&gt;Con Genesis ho a disposizione dei bellissimi temi che posso utilizzare per avviare velocemente il mio progetto.&lt;/p&gt;

&lt;p&gt;La diferenza tra framework e starter theme si nota proprio da questa componente.&lt;/p&gt;

&lt;p&gt;Uno starter theme è una soluzione che ci permette di &lt;strong&gt;avviare velocemente lo sviluppo di un tema&lt;/strong&gt; ma che ci lascia completamente da soli quando dobbiamo applicare uno stile grafico al progetto.&lt;/p&gt;

&lt;p&gt;StudioPress ha all’attivo &lt;a href="https://dev.to/genesis-themes"&gt;decine di child theme&lt;/a&gt; che possono essere utilizzati con Genesis e molti di questi &lt;strong&gt;si presentano anche con caratteristiche esclusive&lt;/strong&gt; (rigorosamente aggiunte via plugin) per specifiche tipologie di attività.&lt;/p&gt;

&lt;p&gt;Come dicevo anche prima, la cosa più bella di tutte è che con l’acquisto del pacchetto &lt;a href="https://dev.to/genesis-pro"&gt;Pro Plus&lt;/a&gt; si accede a tutti i temi offerti da StudioPress senza alcun costo aggiuntivo.&lt;/p&gt;

&lt;p&gt;Particolarmente suggerito se vuoi avviare la tua attività da freelancer o utilizzare Genesis nella tua web agency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Critiche da parte degli sviluppatori
&lt;/h2&gt;

&lt;p&gt;Onestamente ho trovato alcune difficoltà nel trovare dei consigli sul NON utilizzare Genesis come framework per lo sviluppo di temi WordPress.&lt;/p&gt;

&lt;p&gt;Non perché voglio dipingere Genesis come la miglior cosa accaduta al web dopo WordPress, semplicemente perché tra i miei contatti ho trovato soltanto due punti a sfavore, uno dei quali è un’incomprensione.&lt;/p&gt;

&lt;p&gt;Ho anche provato a cercare sul web &lt;em&gt;why not use Genesis framework&lt;/em&gt; ma i &lt;a href="https://www.google.com/search?q=why+not+use+genesis+framework"&gt;risultati di questa ricerca&lt;/a&gt; hanno soltanto confermato ulteriormente le mie idee.&lt;/p&gt;

&lt;p&gt;Non sono stato in grado di trovare dei punti a sfavore oltre ai seguenti.&lt;/p&gt;

&lt;h3&gt;
  
  
  Genesis non è un framework open source
&lt;/h3&gt;

&lt;p&gt;Per gli amanti del software open source questo potrebbe sembrare un punto a sfavore ma la realtà dei fatti è ben diversa.&lt;/p&gt;

&lt;p&gt;Genesis è un framework open source sotto licenza GPL!&lt;/p&gt;

&lt;p&gt;Quello che magari in molti non capiscono è che la &lt;strong&gt;distribuzione di questo framework è diversa&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;La scelta di StudioPress è molto commerciale, infatti è difficile trovarlo liberamente scaricabile, ma con l’acquisto non si ottiene soltanto l’accesso al codice sorgente ma anche a tutto il supporto e l’affiatata community!&lt;/p&gt;

&lt;p&gt;Considerando poi che &lt;a href="https://dev.to/genesis"&gt;il costo è molto vantaggioso&lt;/a&gt; e che è un investimento unico che &lt;strong&gt;dura tutta la vita&lt;/strong&gt; , credo che ti sia molto semplice capire che il ritorno di investimento è molto vantaggioso.&lt;/p&gt;

&lt;h3&gt;
  
  
  È difficile operare all’interno di &lt;code&gt;wp_content&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;L’unica altra critica che ho ricevuto da parte di uno sviluppatore nei confronti di Genesis è da parte di Daniele Scasciafratte durante lo sviluppo di un plugin dedicato alla &lt;a href="https://skillsandmore.org/glossario-wordpress-serp/"&gt;creazione di un&lt;/a&gt;&lt;em&gt;&lt;a href="https://skillsandmore.org/glossario-wordpress-serp/"&gt;Glossario&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Se vogliamo vederlo come un problema, Genesis usa degli hook diversi rispetto al classico WordPress per mostrare il contenuto.&lt;/p&gt;

&lt;p&gt;Probabilmente tu NON AVRAI questo problema!&lt;/p&gt;

&lt;p&gt;C’è da dire che si incontra questo aspetto soltanto se dobbiamo fare grosse operazioni sul contenuto. Il plugin di riferimento analizza tutte le parole presenti nel testo di un articolo, per questo motivo sono state incontrate tali difficoltà.&lt;/p&gt;

&lt;p&gt;Dall’avvento di Gutenberg &lt;strong&gt;la musica sta cambiando&lt;/strong&gt; e vedendo la rapidità dei lavori in casa StudioPress prevedo che tra non molto avremo un miglioramento anche in questo contesto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusioni
&lt;/h2&gt;

&lt;p&gt;Arriviamo al punto finale di questo articolo, il punto all’interno del quale tu prenderai la tua scelta.&lt;/p&gt;

&lt;p&gt;Userai Genesis nel tuo lavoro?&lt;/p&gt;

&lt;p&gt;Quello che spero di aver fatto scrivendo questo articolo è di averti fornito tutte le informazioni di cui hai bisogno per &lt;strong&gt;prendere una scelta&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Anche se ovviamente il mio punto di vista è di parte, come ti ho già detto uso Genesis per qualsiasi lavoro WordPress incontro, credo di aver elencato tutti i vantaggi e svantaggi con un punto di vista abbastanza critico.&lt;/p&gt;

&lt;p&gt;Il mio intento non è quello di guadagnare con i link di affiliazione che ho inserito in questo articolo, il mio intento (un po’ come per &lt;a href="https://dev.to/blog"&gt;ogni articolo che viene pubblicato su questo sito&lt;/a&gt;) è quello di &lt;strong&gt;esserti di aiuto&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;È quello di condividere con te esperienze che ho già fatto e le scelte che ho preso.&lt;/p&gt;

&lt;p&gt;Se poi tu non usi Genesis per qualche motivo che non ho elencato, ti chiedo di &lt;strong&gt;aggiungere la tua esperienza&lt;/strong&gt; nei commenti. Così facendo aiuterai il sottoscritto e i lettori di questo blog a comprendere meglio le potenzialità e i limiti di questo framework.&lt;/p&gt;

&lt;p&gt;Infine, se l’articolo ti è piaciuto, perché non lo condividi con amici e colleghi? Non soltanto aiuterai questo blog ad aiutare più persone ma anche i tuoi colleghi scopriranno che tu ti mantieni aggiornato 😉&lt;/p&gt;

&lt;p&gt;L'articolo &lt;a href="https://skillsandmore.org/genesis-scelta-framework/"&gt;Perché dovresti prendere in considerazione Genesis&lt;/a&gt; proviene da &lt;a href="https://skillsandmore.org"&gt;SkillsAndMore&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>framework</category>
      <category>genesis</category>
      <category>sviluppo</category>
    </item>
    <item>
      <title>L’introduzione al terminale che avrei desiderato</title>
      <dc:creator>Andrea Barghigiani</dc:creator>
      <pubDate>Mon, 08 Apr 2019 06:27:15 +0000</pubDate>
      <link>https://dev.to/andreabarghigiani/l-introduzione-al-terminale-che-avrei-desiderato-50f7</link>
      <guid>https://dev.to/andreabarghigiani/l-introduzione-al-terminale-che-avrei-desiderato-50f7</guid>
      <description>&lt;p&gt;&lt;a href="https://skillsandmore.org/introduzione-terminale/" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F02%2Fintro-terminale.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Essere in grado di utilizzare il terminale &lt;strong&gt;è essenziale per qualsiasi sviluppatore web&lt;/strong&gt; desideri approfondire le proprie conoscenze e velocizzare il proprio lavoro.&lt;/p&gt;

&lt;p&gt;Sono sicuro che sei un bravo sviluppatore e che da anni crei le tue applicazioni web senza problemi ma potresti comunque non aver mai sentito parlare del terminale.&lt;/p&gt;

&lt;p&gt;In questo articolo il mio compito sarà quello di guidarti alla conoscenza di questo &lt;strong&gt;potente strumento&lt;/strong&gt; e di aiutarti a muovere i primi passi al suo interno così da aiutarti a &lt;strong&gt;velocizzare il tuo lavoro e a utilizzare gli strumenti più potenti sul mercato&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Dimentico forse di dire che stiamo parlando di uno &lt;strong&gt;strumento gratuito&lt;/strong&gt; che puoi installare in qualsiasi sistema operativo?!?&lt;/p&gt;

&lt;p&gt;Ok penso di aver appena rimediato al mio dubbio.&lt;/p&gt;

&lt;p&gt;Adesso è giunto il momento di porsi la domanda delle domande:&lt;/p&gt;

&lt;h2&gt;
  
  
  Che cosa è un terminale?
&lt;/h2&gt;

&lt;p&gt;Per rispondere è necessario tornare indietro nel tempo, alle prime versioni dei computer che erano collegati a uno schermo.&lt;/p&gt;

&lt;p&gt;Lasciamo da parte tutta l’era dei computer programmabili con schede perforate che risulta irrilevante per questo argomento.&lt;/p&gt;

&lt;p&gt;A quei tempi poter eseguire delle interfacce grafiche come quelle di adesso era &lt;strong&gt;troppo dispendioso&lt;/strong&gt; (in termini di risorse) e nessuno aveva ancora pensato di creare un &lt;em&gt;desktop environment&lt;/em&gt; in grado di sovrapporre finestre, impostare immagini di sfondo e aprire applicazioni con un doppio clic.&lt;/p&gt;

&lt;p&gt;Non c’era bisogno di alcun desktop!&lt;/p&gt;

&lt;p&gt;A parte il consumo di risorse, ai tempi &lt;strong&gt;non si pensava&lt;/strong&gt; che per usare meglio un computer fosse necessario qualcosa di diverso dal terminale.&lt;/p&gt;

&lt;p&gt;Anche se molto meno potenti dello smartphone che porti in tasca, i computer di allora erano in grado di svolgere le stesse operazioni che riteniamo comuni.&lt;/p&gt;

&lt;p&gt;Soltanto non avevano bisogno di una &lt;em&gt;Graphic User Interface&lt;/em&gt; (o GUI).&lt;/p&gt;

&lt;p&gt;Operazioni come l’invio di una mail, la scrittura di codice o mandare un file in stampa venivano &lt;strong&gt;svolte interamente da terminale&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F02%2Foperazioni-terminale.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F02%2Foperazioni-terminale.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nonostante l’indiscusso successo delle GUI che hanno avvicinato l’uso dei computer a qualsiasi tipo di persona, &lt;strong&gt;il terminale è sempre installato sui nostri sistemi operativi&lt;/strong&gt; e possiamo usarli quando desideriamo.&lt;/p&gt;

&lt;p&gt;Ci sono un paio di motivi che ritengo importanti che mi spingono a scrivere questo articolo e consigliarti questo potente strumento:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;attraverso il terminale puoi fare molte più cose che con una GUI –&lt;/strong&gt; vuoi sincronizzare un sito locale con uno online? Vuoi installare dei &lt;a href="https://skillsandmore.org/npm-package-manager-nodejs/" rel="noopener noreferrer"&gt;pacchetti npm&lt;/a&gt; per la tua applicazione? Hai bisogno di eseguire specifici workflow con Gulp? Puoi fare tutto questo e molto altro dal terminale! In alcuni casi esistono delle GUI che ti facilitano nel compito da svolgere ma nessuna ti offrirà tutte le funzionalità che avrai a disposizione eseguendo i comandi dal terminale.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;il terminale permette di automatizzare i task più ripetitivi –&lt;/strong&gt; sono sicuro che anche tu come sviluppatore sei sempre alla ricerca di automazioni che possono aiutarti nel tuo lavoro. Ebbene imparare a usare bene il terminale ti aiuterà anche in questo!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Chiunque potrà trovare altri motivi che in grado di validare la mia tesi ma preferisco &lt;strong&gt;passare direttamente all’azione&lt;/strong&gt; e parlarti di alcuni dei comandi più interessanti.&lt;/p&gt;

&lt;p&gt;Imparare a usare il terminale ha una sua curva di apprendimento, non te lo nascondo, ma se sai programmare &lt;strong&gt;gran parte dello sforzo lo hai già fatto&lt;/strong&gt; e i benefici che potrai ottenere dall’uso di questo strumento ti aiuteranno a capire ancora meglio come funziona il tuo computer e il server online che ospita il tuo sito web.&lt;/p&gt;

&lt;p&gt;Attenzione: esistono diversi tipi di terminale&lt;/p&gt;

&lt;p&gt;Stiamo parlando di uno strumento che è stato inventato decine di anni fa ed è normale trovare diverse versioni e approcci. Apro questa parentesi per dirti che &lt;strong&gt;non devi preoccuparti&lt;/strong&gt; se esistono diversi approcci.  &lt;/p&gt;

&lt;p&gt;A noi sviluppatori web questa varietà nelle versioni del terminale non interessa molto perché di base tutte comprendono la sintassi che possiamo usare in un caomune terminale Bash (il più diffuso).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://skillsandmore.org/diventa-uno-skillato/" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F03%2Fdiventa-skillato.png" alt="Investi in te stesso e diventa uno Skillato oggi!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Primi comandi da terminale
&lt;/h2&gt;

&lt;p&gt;Come succede molto spesso i primi passi che facciamo in qualsiasi campo possono (talvolta) risultare noiosi o ripetitivi.&lt;/p&gt;

&lt;p&gt;Quello che ti consiglio fin da ora è &lt;strong&gt;non perdere le speranze&lt;/strong&gt; perché questi sono i &lt;strong&gt;comandi fondamentali&lt;/strong&gt; che userai più frequentemente e che ti consiglio di imparare per bene.&lt;/p&gt;

&lt;p&gt;Padroneggiarli ti permetterà inoltre di comprendere la logica che sta alla base nell’uso del terminale, grazie a questi concetti imparerai a utilizzare naturalmente anche i comandi più avanzati scoprendo facilmente i loro dettagli.&lt;/p&gt;

&lt;p&gt;Il primo passo è &lt;strong&gt;non aver paura del terminale&lt;/strong&gt; perché anche se questo strumento non presenta tutti i menu e le grafiche alle quali siamo stati abituati.&lt;/p&gt;

&lt;p&gt;Diventa un vero &lt;em&gt;cucciolone&lt;/em&gt; se impariamo a parlarci.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2018%2F12%2Fterminal-basic.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2018%2F12%2Fterminal-basic.gif" alt="Impostazioni base del terminale"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A prima vista può sembrare uno strumento molto &lt;em&gt;“tetro”&lt;/em&gt;. Generalmente la sua impostazione di default comporta l’uso di un colore di sfondo molto scuro (o chiaro) che presenta strane stringhe che a prima vista non hanno significato.&lt;/p&gt;

&lt;p&gt;Con l’immagine sopra ho cercato di introdurti alle informazioni principali che il terminale offre:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;iMac-di-Andrea&lt;/code&gt; &lt;strong&gt;il nome del computer sul quale stiamo lavorando&lt;/strong&gt; – questo è molto utile perché con il terminale possiamo facilmente connetterci e gestire i nostri server online,&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;~&lt;/code&gt; &lt;strong&gt;la cartella nella quale stiamo lavorando –&lt;/strong&gt; il terminale non è in grado di mostrare una finestra con i file contenuti all’interno di una cartella e per questo motivo è utile sapere velocemente dove siamo (nello screenshot è presente il carattere &lt;code&gt;~&lt;/code&gt; (&lt;em&gt;tilde&lt;/em&gt;) che indica la cartella home dell’utente loggato),&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;abarghigiani&lt;/code&gt; &lt;strong&gt;nome dell’utente loggato –&lt;/strong&gt; il terminale è uno strumento nato principalmente su sistemi UNIX, tra i sistemi più famosi a portare la multiutenza all’interno dei sistemi operativi. Sapere &lt;em&gt;“chi siamo”&lt;/em&gt; ci aiuta a eseguire i comandi corretti,&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;$&lt;/code&gt; &lt;strong&gt;ruolo utente loggato –&lt;/strong&gt; anche se non è proprio la definizione corretta, il simbolo che si presenta nel terminale ci aiuta a capire quale sono i permessi che ha a disposizione l’utente loggato per lavorare sul computer. Con il simbolo &lt;code&gt;$&lt;/code&gt; (dollaro) si identifica un utente comune mentre con il &lt;code&gt;#&lt;/code&gt; viene indicato l’utente amministratore che può fare qualsiasi cosa.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Adesso che sei in grado di capire le informazioni che che ti vengono fornite dal terminale è giunto il momento di scoprire quali sono i primi comandi che puoi utilizzare.&lt;/p&gt;

&lt;h3&gt;
  
  
  Muoviti tra file e cartelle
&lt;/h3&gt;

&lt;p&gt;Tra i comandi più utili che potrai imparare possiamo mettere sicuramente quelli che ci permettono di capire dove siamo e che ci aiutano a muoverci all’interno del nostro sistema operativo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/share?text=Il+%23terminale+ci+consente+di+muoverci+facilmente+all%27interno+del+nostro+sistema+operativo%2C+sia+questo+il+computer+nel+quale+stiamo+sviluppando+o+un+server+online+che+esegue+la+nostra+applicazione+web.&amp;amp;via=skillandmore&amp;amp;url=https://skillsandmore.org/introduzione-terminale/?utm_source=twitter&amp;amp;utm_medium=Social&amp;amp;utm_campaign=SocialWarfare" rel="noopener noreferrer"&gt;Il terminale ci consente di muoverci facilmente all'interno del nostro sistema operativo, sia questo il computer nel quale stiamo sviluppando o un server online che esegue la nostra applicazione web.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Questo perché, appena aperto, il terminale ci &lt;strong&gt;fa trovare all’interno della cartella home&lt;/strong&gt; dell’utente che sta utilizzando questa applicazione ma non sempre salviamo al suo interno i file sui quali stiamo lavorando.&lt;/p&gt;

&lt;p&gt;Per rendere l’apprendimento il più utile e divertente trovi una lista dei comandi più interessanti seguita da un piccolo paragrafo dove descrivo come questi comandi si possono usare assieme.&lt;/p&gt;

&lt;p&gt;Pronto per questo esperimento?&lt;/p&gt;

&lt;p&gt;Perfetto.&lt;/p&gt;

&lt;p&gt;Iniziamo con la lista di comandi che useremo per questo esempio:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;pwd&lt;/code&gt; &lt;em&gt;(print working directory)&lt;/em&gt; – il terminale è in grado di farci sapere il nome della cartella dalla quale stiamo lavorando ma può capitare di avere più cartelle con lo stesso nome. Ecco che il comando &lt;code&gt;pwd&lt;/code&gt; può aiutarci mostrando l’intero percorso che identifica univocamente il tuo file.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ls&lt;/code&gt; &lt;em&gt;(list directory contents)&lt;/em&gt; – sapere dove siamo non è sufficiente se non sappiamo quali file e cartelle sono contenute. Ecco che il comando &lt;code&gt;ls&lt;/code&gt; viene in nostro soccorso elencando tutti i file e cartelle (volendo anche quelli nascosti) che contiene la cartella dove ci troviamo.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cd&lt;/code&gt; &lt;em&gt;(change directory)&lt;/em&gt; – tutto il nostro filesystem è organizzato in cartelle, ecco perché questo è uno dei comandi più fondamentali. Digitando &lt;code&gt;cd &amp;lt;nome-cartella&amp;gt;&lt;/code&gt; sarai in grado di entrare all’interno della cartella e fare quello che desideri.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La precedente &lt;strong&gt;non è una lista completa&lt;/strong&gt; dei comandi che ci vengono messi a disposizione dal terminale ma sono sicuramente quelli che ci permettono di muovere i primi passi e di rispondere alle domande fondamentali come:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Dove mi trovo?&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Quali file ho a disposizione?&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Come mi sposto da una cartella a un altra?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F02%2Fcomandi-fondamentali-terminale.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F02%2Fcomandi-fondamentali-terminale.jpg" alt="pwd, ls, cd sono i comandi fondamentali per muoversi all'interno del nostro computer con il terminale."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Verso la fine di questo articolo ti elencherò altri comandi molto utili da usare ma adesso è giunto il momento di fare l’esempio pratico di cui ti parlavo.&lt;/p&gt;
&lt;h3&gt;
  
  
  Caso d’uso per i comandi principali del terminale
&lt;/h3&gt;

&lt;p&gt;Ecco un piccolo esempio che mira a descriverti un vero caso d’uso dove è preferibile avere a propria disposizione il terminale piuttosto che qualsiasi altra applicazione con GUI.&lt;/p&gt;

&lt;p&gt;In questo esempio io sto lavorando alla creazione del nuovo tema per questo portale.&lt;/p&gt;

&lt;p&gt;Dopo qualche ora di lavoro torno sul mio terminale e vedo che sono nella cartella &lt;code&gt;skillsandmore&lt;/code&gt;. Il problema è che sul mio sistema ho diverse cartelle con questo nome, mi trovo all’interno di quella dove salvo i documenti relativi al progetto o in quella dell’installazione WordPress?&lt;/p&gt;

&lt;p&gt;Per saperlo tutto quello che devo fare è digitare &lt;code&gt;pwd&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Il terminale risponde con il seguente percorso: &lt;code&gt;/Users/abarghigiani/Coding/skillsandmore&lt;/code&gt;. Dato che la cartella &lt;code&gt;Coding/&lt;/code&gt; è quella che utilizzo per lo sviluppo dei siti web; a questo punto &lt;strong&gt;so di trovarmi all’interno della cartella che contiene l’installazione WordPress&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Sapere dove sono è utile, però devo continuare a sviluppare il mio tema che prende il nome di &lt;code&gt;sam-2019/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Se non conoscessi la struttura di un’installazione WordPress dovrei lanciare diverse volte il comando &lt;code&gt;ls&lt;/code&gt; per scoprire quali sono i file e le cartelle presenti e muovermi successivamente al loro interno con il comando &lt;code&gt;cd&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Per fortuna conosco bene questa struttura, le installazioni WordPress sono molto simili tra loro (a meno di modifiche), quindi a questo punto so che la cartella che contiene il tema si trova dentro la cartella &lt;code&gt;themes/&lt;/code&gt; che a sua volta si trova all’interno della cartella &lt;code&gt;wp-content/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Tutto quello che devo fare adesso è utilizzare il comando &lt;code&gt;cd&lt;/code&gt; e passargli il percorso relativo dalla mia posizione per aprire la cartella &lt;code&gt;sam-2019&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;wp-content/themes/sam-2019
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nel terminale inserisco &lt;code&gt;cd wp-content/themes/sam-2019&lt;/code&gt; e il gioco è fatto.&lt;/p&gt;

&lt;p&gt;Il tuo percorso potrebbe essere diverso!&lt;/p&gt;

&lt;p&gt;Ovviamente gli esempi precedenti (e quelli successivi) fanno riferimento al percorso dei miei progetti. I percorsi sul tuo computer potrebbero essere diversi.&lt;/p&gt;

&lt;p&gt;Se ho dei dubbi, una volta entrato nella cartella, posso sempre eseguire il comando &lt;code&gt;pwd&lt;/code&gt; per conoscere il percorso completo alla posizione in cui mi trovo.&lt;/p&gt;

&lt;p&gt;Adesso ho la possibilità di vedere tutti i file del mio tema con un semplice &lt;code&gt;ls&lt;/code&gt; ma come posso fare per lavorare al suo interno?&lt;/p&gt;

&lt;p&gt;Ho bisogno di un editor di codice e la cosa bella è che &lt;a href="https://skillsandmore.org/corso/padroneggia-il-potere-di-atom/" rel="noopener noreferrer"&gt;grazie ad Atom&lt;/a&gt; posso aprire questa cartella direttamente da terminale e mettermi subito a lavorare senza neanche dover cercare il mouse.&lt;/p&gt;

&lt;p&gt;Tutto quello che devo fare è digitare &lt;code&gt;atom .&lt;/code&gt; e il mio editor di codice si aprirà automaticamente con i file della cartella presente nel mio terminale.&lt;/p&gt;

&lt;h2&gt;
  
  
  Caratteri speciali, opzioni e consigli utili
&lt;/h2&gt;

&lt;p&gt;Spero che l’esempio pratico sia servito a farti capire meglio le potenzialità del terminale e anche se al momento può sembrare un approccio meno intuitivo ti invito a continuare la lettura perché &lt;strong&gt;il terminale dona un immenso potere&lt;/strong&gt; che può veramente aiutarti nello sviluppo!&lt;/p&gt;

&lt;p&gt;Come ti ho detto più volte in questo articolo, &lt;strong&gt;il terminale può aiutarci ad automatizzare i compiti più ripetitivi&lt;/strong&gt; ma prima dobbiamo conoscere alcuni concetti base sul suo uso.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F02%2Fsegreti-terminale.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F02%2Fsegreti-terminale.jpg" alt="Il terminale automatizza molti compiti ma è anche pericoloso! È bene conoscere i suoi segreti"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Al momento hai eseguito nel tuo terminale (se stai seguendo passo passo) tutti i comandi che ti ho proposto basandoti sulla fiducia ma sapevi che il terminale contiene &lt;strong&gt;la miglior documentazione&lt;/strong&gt; disponibile sui comandi che puoi usare?&lt;/p&gt;

&lt;p&gt;Potenti strumenti e un’approfondita documentazione all’interno dello stesso strumento, mica male questo terminale 😉&lt;/p&gt;

&lt;p&gt;Puoi accedere alla documentazione di qualsasi comando a tua disposizione precedendolo con &lt;code&gt;man&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Per esempio se nel terminale digiti &lt;code&gt;man ls&lt;/code&gt; e successivamente premi il pulsante Invio ecco cosa ti troverai di fronte:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F02%2Fman-ls.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F02%2Fman-ls.png" alt="Mostro il manuale del comando ls ottenuto digitando man ls all'interno del terminale."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Non è la documentazione più bella che puoi trovare ma &lt;strong&gt;è tutto ciò che ti serve&lt;/strong&gt; per chiarire velocemente i tuoi dubbi.&lt;/p&gt;

&lt;p&gt;Prima di approfondire le informazioni che troverai al suo interno mettiamo subito in chiaro &lt;strong&gt;come uscire dalla documentazione&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Tutto quello che devi fare è premere il pulsante &lt;code&gt;q&lt;/code&gt; della tua tastiera.&lt;/p&gt;

&lt;p&gt;Le informazioni principali che troverai al suo interno sono il nome completo del comando, la sintassi utilizzata per personalizzare il suo comportamento e &lt;strong&gt;la lista completa di tutte le opzioni&lt;/strong&gt; che puoi utilizzare.&lt;/p&gt;

&lt;h3&gt;
  
  
  Le opzioni di un comando
&lt;/h3&gt;

&lt;p&gt;Le opzioni di permettono di modificare il risultato standard di un comando. Ti ricordo che con &lt;code&gt;ls&lt;/code&gt; siamo in grado di elencare tutti i file presenti in una cartella ma hai notato che ti viene fornita soltanto &lt;strong&gt;una lista di nomi&lt;/strong&gt; senza distinzione tra cartelle e file?&lt;/p&gt;

&lt;p&gt;Inoltre cosa dovresti fare se desideri organizzare questi file in colonne per facilitarti la lettura?&lt;/p&gt;

&lt;p&gt;Ecco che le opzioni risultano veramente interessanti!&lt;/p&gt;

&lt;p&gt;Per esempio se aggiungo &lt;code&gt;-al&lt;/code&gt; al comando &lt;code&gt;ls&lt;/code&gt; il terminale mi mostrerà anche &lt;strong&gt;i file nascosti e i permessi&lt;/strong&gt; applicati a file e cartelle.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F02%2Fls-al.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F02%2Fls-al.png" alt="Il risultato del comando ls eseguito da terminale."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Come puoi vedere adesso abbiamo molte più informazioni rispetto all’esecuzione di un classico &lt;code&gt;ls&lt;/code&gt;. Con queste opzioni possiamo facilmente scoprire quali sono i file nascosti nella cartella (sono quelli che iniziano con un &lt;code&gt;.&lt;/code&gt;) e anche quali sono le cartelle e quali semplici file (grazie alla &lt;code&gt;d&lt;/code&gt; che sta per &lt;em&gt;directory&lt;/em&gt; presente nella prima colonna).&lt;/p&gt;

&lt;p&gt;Esistono molte altre opzioni interessanti che ti invito a scoprire andando a consultare la documentazione del comando con &lt;code&gt;man ls&lt;/code&gt; perché adesso voglio introdurti un altro importante concetto del terminale.&lt;/p&gt;

&lt;h3&gt;
  
  
  Caratteri Speciali
&lt;/h3&gt;

&lt;p&gt;Se hai guardato con attenzione la lista degli elementi elencati precedentemente avrai notato che i primi due file sono &lt;code&gt;.&lt;/code&gt; e &lt;code&gt;..&lt;/code&gt;, ma cosa sono?&lt;/p&gt;

&lt;p&gt;Questi sono &lt;strong&gt;i primi due caratteri speciali&lt;/strong&gt; che hai incontrato utilizzando il terminale. Il punto &lt;code&gt;.&lt;/code&gt; è una scorciatoia che ci permette di fare riferimento alla cartella in cui siamo (ecco perché il comando &lt;code&gt;atom .&lt;/code&gt; ha aperto la finestra dell’editor con i nostri file al suo interno).&lt;/p&gt;

&lt;p&gt;L’altro carattere, i due punti &lt;code&gt;..&lt;/code&gt;, è una scorciatoia che ci permette di fare riferimento alla cartella superiore a quella che stiamo consultando.&lt;/p&gt;

&lt;p&gt;È una scorciatoia incredibilmente utile perché posso muovermi con un singolo &lt;code&gt;cd ..&lt;/code&gt;, ma questo è soltanto l’inizio.&lt;/p&gt;

&lt;p&gt;L’uso dei &lt;code&gt;..&lt;/code&gt; ci permette di navigare facilmente all’interno di un progetto perché possono essere concatenati e farci navigare più cartelle alla volta.&lt;/p&gt;

&lt;p&gt;Però questi non sono gli unici caratteri speciali che puoi passare in un terminale. Ti faccio una veloce lista dei più comuni:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;~&lt;/code&gt;– indipendentemente dalla tua posizione all’interno del sistema questo carattere punterà sempre &lt;strong&gt;alla home dell’utente che è loggato&lt;/strong&gt;. Quindi anche se stai lavorando sul terminale e devi tornare alla tua home (o semplicemente farci riferimento per costrire un percorso) puoi usare questo carattere.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;#&lt;/code&gt; – anche se è più usato quando si creano degli script che ci facilitano la vita (il terminale può essere programmato) con questo carattere specifichiamo l’inizio di un commento in singola linea mentre, come già visto, se è il nostro terminale che mostra questo carattere significa che lo stiamo usando come amministratori.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;\&lt;/code&gt; – il backslash viene utilizzato come carattere di escape, questo ci permette di costruire stringhe complesse o soltanto selezionare il nome di file o cartelle contenenti degli spazi. Spesso lo puoi vedere in azione quando premi &lt;code&gt;TAB&lt;/code&gt; per avviare l’autocompletamento di &lt;code&gt;Documents/File\ Name\ 1\ def.pdf&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Esistono molti altri caratteri utili che puoi usare all’interno di un terminale ma sto scrivendo molto e forse ti sto confondento un po’ le idee.&lt;/p&gt;

&lt;p&gt;Facciamo una cosa, io ora voglio mostrarti &lt;strong&gt;alcuni usi pratici in cui il terminale vince 10 a 0&lt;/strong&gt; rispetto a qualsiasi altro strumento con GUI in termini di velocità (e in mia opinione anche in facilità di utilizzo).&lt;/p&gt;

&lt;p&gt;Se l’articolo ti è piaciuto e vuoi scoprire meglio come usare il terminale al massimo commentalo o &lt;a href="https://skillsandmore.org/contatti/" rel="noopener noreferrer"&gt;scrivimi una mail&lt;/a&gt; così capirò chiaramente quanto interesse c’è dietro questo argomento.&lt;/p&gt;

&lt;h2&gt;
  
  
  Piccoli esempi in cui è utile conoscere il terminale
&lt;/h2&gt;

&lt;p&gt;All’interno di questa sezione finale dell’articolo voglio mostrarti alcuni esempi pratici in cui la conoscenza del terminale semplifica la nostra vita da sviluppatori.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F02%2Fesempi-terminale.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F02%2Fesempi-terminale.jpg" alt="Quattro esempi per scoprire che il terminale vince 10 - 1 contro qualsiasi applicazione con GUI"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esistono migliaia di casi d’uso per i quali il terminale risulta essere lo strumento migliore da usare e in molti è &lt;strong&gt;l’unico strumento che puoi usare&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creazione di uno script Bash
&lt;/h3&gt;

&lt;p&gt;Sicuramente questo non è un argomento che interessa tutti noi ma voglio proportelo come primo perché avere la possibilità di creare degli script che automatizzano il nostro lavoro può essere molto comodo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/share?text=Creare+degli+script+%23bash+ci+aiuta+infinitamente+quando+dobbiamo+compiere+azioni+ripetitive+all%27interno+del+%23terminale.&amp;amp;via=skillandmore&amp;amp;url=https://skillsandmore.org/introduzione-terminale/?utm_source=twitter&amp;amp;utm_medium=Social&amp;amp;utm_campaign=SocialWarfare" rel="noopener noreferrer"&gt;Creare degli script Bash ci aiuta infinitamente quando dobbiamo compiere azioni ripetitive all'interno del terminale.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sono convinto che sai bene che per installare WordPress in locale esistono molte soluzioni.&lt;/p&gt;

&lt;p&gt;C’è chi utilizza &lt;a href="https://skillsandmore.org/mamp-apache-ambiente-sviluppo/" rel="noopener noreferrer"&gt;MAMP&lt;/a&gt;, altri Local by Flywheel mentre altri ancora (come il sottoscritto ed Eugenio) preferisce affidarsi a una &lt;a href="https://skillsandmore.org/docker-sviluppo-wordpress/" rel="noopener noreferrer"&gt;macchina Docker configurata per bene&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Ora, configurare diversi container Docker per avere un’installazione WordPress funzionante è un compito molto arduo per il sottoscritto che non ha profonde conoscenze sulla gestione di un server web ma per altri è un gioco da ragazzi.&lt;/p&gt;

&lt;p&gt;Conoscere i server e il terminale rende possibile creare un &lt;a href="https://github.com/EugenioPetulla/wp-docker" rel="noopener noreferrer"&gt;semplice script Bash&lt;/a&gt; che guida anche un &lt;em&gt;tonto-Docker&lt;/em&gt; come il sottoscritto a installare WordPress completamente funzionante (anche con strumenti utilissimi come &lt;a href="https://dev.to/andreabarghigiani/wordmove-una-gemma-per-il-deploy-wordpress-1lbg-temp-slug-9215735"&gt;WordMove&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  Avviare un preprocessore CSS
&lt;/h3&gt;

&lt;p&gt;Nel corso dedicato al &lt;a href="https://skillsandmore.org/corso/conosci-sass-e-migliora-i-tuoi-css/" rel="noopener noreferrer"&gt;preprocessore Sass&lt;/a&gt; (che sto rilanciando proprio adesso) ti ho presentato &lt;a href="https://prepros.io/" rel="noopener noreferrer"&gt;Prepros&lt;/a&gt;, un’applicazione che ti aiuta a sviluppare compilando al posto tuo i file &lt;code&gt;.scss&lt;/code&gt; in classici fogli di stile &lt;code&gt;.css&lt;/code&gt; perfettamente comprensibili da qualsiasi browser.&lt;/p&gt;

&lt;p&gt;Sicuramente avere un’applicazione con una GUI può essere un aspetto comodo quando ci approcciamo ad un nuovo workflow ma spesso queste soluzioni sono &lt;strong&gt;poco performanti e poco configurabili&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Avere il controllo del proprio terminale ti consente di accedere a strumenti che prendono il nome di &lt;em&gt;task automation&lt;/em&gt;, ovvero delle regole che vengono eseguite dopo qualche varizione nei file presenti nel progetto.&lt;/p&gt;

&lt;p&gt;Grazie a Gulp, uno dei task runner più famosi, puoi configurare il tuo ambiente di sviluppo in modo che esegua le seguenti operazioni ad ogni modifica oppure lanciandoli singolarmente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ottimizzazione immagini –&lt;/strong&gt; puoi far eseguire delle ottimizzazioni sulle immagini in modo che il loro peso sia minore senza perdita di qualità.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;browser live reload –&lt;/strong&gt; incredibilmente comodo quando si sviluppa! Praticamente ogni volta che modifichi qualcosa il browser si ricarica automaticamente mostrandoti le modifiche effettuate!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;compilare Sass in CSS –&lt;/strong&gt; forse la cosa più &lt;em&gt;“standard”&lt;/em&gt; da fare con un task manager è proprio la generazione automatica dei file &lt;code&gt;.css&lt;/code&gt; ogni volta che vengono salvate modifiche nei file &lt;code&gt;.scss&lt;/code&gt; che compongono il progetto.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Questi sono soltanto alcune delle attività che puoi &lt;strong&gt;avviare automaticamente grazie a Gulp&lt;/strong&gt; e la cosa più bella è la sua facilità di utilizzo.&lt;/p&gt;

&lt;p&gt;Prima di metterti al lavoro non devi far altro che scrivere &lt;code&gt;gulp&lt;/code&gt; (oppure &lt;code&gt;gulp &amp;lt;nome-task&amp;gt;&lt;/code&gt;) all’interno della cartella che contiene il progetto e il gioco è fatto!&lt;/p&gt;

&lt;p&gt;Ovviamente questa sezione rappresenta soltanto un esempio e non è stato spiegato l’approccio pratico a questa soluzione.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://skillsandmore.org/corso-sass" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F04%2Fshare-fb.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se sei curioso di sapere come configurare il tuo ambiente di sviluppo per sfruttare Gulp commenta questo articolo o &lt;a href="https://skillsandmore.org/newsletter/" rel="noopener noreferrer"&gt;iscriviti alla nostra newsletter&lt;/a&gt;, in entrambi i casi ti contatterò per farti sapere quando pubblicherò l’articolo dedicato a questo potente task runner!&lt;/p&gt;

&lt;h3&gt;
  
  
  Connettersi a un server remoto
&lt;/h3&gt;

&lt;p&gt;Un altro aspetto in cui il terminale mostra il meglio di sè è quado abbiamo la necessità di collegarci a un server remoto e dobbiamo fare alcune operazioni.&lt;/p&gt;

&lt;p&gt;Sono sicuro che sai benissimo che molti hosting mettono a disposizione dei pannelli di gestione per i propri server, Plesk e cPanel sono i più comuni, pannelli che permettono di fare molte operazioni:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;modificare la versione PHP in esecuzione&lt;/li&gt;
&lt;li&gt;navigare i file salvati nel nostro spazio&lt;/li&gt;
&lt;li&gt;impostare e leggere caselle email&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In effetti questi pannelli ci offrono delle interfacce per fare praticamente qualsiasi cosa ma, come già detto nei confronti delle GUI, molto spesso per arrivare a questi comandi abbiamo &lt;strong&gt;un’esperienza più lenta&lt;/strong&gt; perché siamo costretti ad aprire un browser e puntarlo sull’indirizzo giusto, eseguire il login, entrare nel nostro pannello e trovare la funzionalità di cui abbiamo bisogno.&lt;/p&gt;

&lt;p&gt;Con il terminale &lt;strong&gt;tutto questo non succede&lt;/strong&gt; perché non dovrai far altro che utilizzare il comando &lt;code&gt;ssh&lt;/code&gt; per collegarti in modo sicuro al tuo server online e utilizzare i comandi per applicare modifiche instantanee al tuo server.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;ssh &amp;lt;utente&amp;gt;@&amp;lt;server&amp;gt; &lt;span class="nt"&gt;-p&lt;/span&gt;&amp;lt;porta&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ecco la sintassi che ti permetterà di collegarti al tuo server online, sempre se il tuo hosting ti permette di farlo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Modificare un database WordPress
&lt;/h3&gt;

&lt;p&gt;Voglio concludere con un comando incredibilmente utile che puoi installare sia sul tuo ambiente di sviluppo in locale che all’interno del tuo server online (anzi molti hosting, come &lt;a href="https://skillsandmore.org/siteground" rel="noopener noreferrer"&gt;SiteGround&lt;/a&gt;, preinstallano questo comando).&lt;/p&gt;

&lt;p&gt;Lo strumento al quale faccio riferimento è WP CLI e ci permette di fare tutto quello che WordPress ci permette di fare dalla sua bacheca e &lt;strong&gt;anche molto di più!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Partiamo subito dal tallone di achille quando lavoriamo in un ambiente di sviluppo locale che dovrà essere spostato successivamente online.&lt;/p&gt;

&lt;p&gt;A meno che tu non usi la &lt;a href="https://skillsandmore.org/mamp-apache-ambiente-sviluppo/" rel="noopener noreferrer"&gt;tecnica dei Virtual Host&lt;/a&gt; il dominio che usi nel tuo ambiente di sviluppo sarà diverso da quello sul quale pubblicarai il sito e dato che WordPress salva queste informazioni nel database &lt;strong&gt;dovrai sostituire questi riferimenti&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Facciamo un esempio pratico, io uso Docker per creare i miei ambienti di sviluppo e lo script con il quale li creo genera la URL &lt;code&gt;http://0.0.0.0:8080&lt;/code&gt; che mi consente di visualizzare il sito in sviluppo.&lt;/p&gt;

&lt;p&gt;Però il mio cliente desidera pubblicare il proprio sito sul dominio &lt;code&gt;https://pianteefiori.it&lt;/code&gt; ed ha già installato il proprio certificato di sicurezza per una connessione in HTTPS.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Come posso risolvere questo problema?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Come consigliato più volte anche all’interno di questo blog, potrei caricare file e database e inserire &lt;a href="https://interconnectit.com/products/search-and-replace-for-wordpress-databases/" rel="noopener noreferrer"&gt;questo script PHP&lt;/a&gt; per modificare i domini con una GUI web, però torniamo ai problemi di velocità e immediatezza…&lt;/p&gt;

&lt;p&gt;Ecco allora che un bel comando come &lt;code&gt;wp search-replace&lt;/code&gt; torna veramente utile!&lt;/p&gt;

&lt;p&gt;Tutto quello che devo fare, una volta caricati file e database sul server online, è collegarmi a questo via SSH e lanciare il seguente comando:&lt;/p&gt;

&lt;p&gt;Una volta che il server avrà finito di eseguire questo comando mi fornirà una comoda tabella che comunicherà quante e dove sono state le stringhe cambiate.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://skillsandmore.org/diventa-uno-skillato/" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F03%2Fdiventa-skillato.png" alt="Investi in te stesso e diventa uno Skillato oggi!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusioni
&lt;/h2&gt;

&lt;p&gt;Siamo giunti al termine di questo articolo e, come sempre, se sei arrivato a questo punto ti &lt;strong&gt;ringrazio di cuore&lt;/strong&gt;. Spero veramente che tu abbia potuto capire meglio il potere di questo importante strumento.&lt;/p&gt;

&lt;p&gt;Usare un terminale è incredibilmente comodo perchè una volta messa da parte la paura di usarlo tutto diventa un gioco da ragazzi!&lt;/p&gt;

&lt;p&gt;Ti consiglio di &lt;a href="https://skillsandmore.org/newsletter" rel="noopener noreferrer"&gt;iscriverti alla newsletter&lt;/a&gt; perché l’argomento terminale verrà sicuramente trattato nuovamente in futuro in modo da mostrarti ancora meglio come questo strumento potrà beneficiare la tua vita di sviluppatore.&lt;/p&gt;

&lt;p&gt;Se sei rimasto con qualche curiosità o dubbio usa pure la sezione dei commenti qua sotto, sarò più che felice di aiutarti a migliorare la tua comprensione.&lt;/p&gt;

</description>
      <category>workflow</category>
    </item>
    <item>
      <title>10 librerie Sass che ti aiutano nello sviluppo CSS</title>
      <dc:creator>Andrea Barghigiani</dc:creator>
      <pubDate>Mon, 11 Mar 2019 07:18:15 +0000</pubDate>
      <link>https://dev.to/andreabarghigiani/10-librerie-sass-che-ti-aiutano-nello-sviluppo-css-523a</link>
      <guid>https://dev.to/andreabarghigiani/10-librerie-sass-che-ti-aiutano-nello-sviluppo-css-523a</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fyy6flk0pgh7occyh82lg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fyy6flk0pgh7occyh82lg.png" alt="10 utili librerie Sass"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Oggi non parleremo di tecniche ma &lt;strong&gt;di soluzioni&lt;/strong&gt;. Soluzioni che altri sviluppatori hanno creato e condiviso con noi e che rappresentano degli approcci davvero interessanti nello sviluppo dei nostri CSS.&lt;/p&gt;

&lt;p&gt;Se ancora non conosci Sass ti dico subito che &lt;strong&gt;stai facendo un grosso errore&lt;/strong&gt; e mi offri la possibilità di sponsorizzare il mio &lt;a href="https://skillsandmore.org/corso/conosci-sass-e-migliora-i-tuoi-css/" rel="noopener noreferrer"&gt;corso dedicato&lt;/a&gt; 😂&lt;/p&gt;

&lt;p&gt;Stai facendo un errore perché ad oggi scrivere i tuoi CSS così come sono stati standardizzati dal W3C è &lt;strong&gt;una grossa perdita di tempo&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Per quanto sia utile ed essenziale &lt;a href="https://skillsandmore.org/corso/fondamenti-del-web-design/" rel="noopener noreferrer"&gt;partire dalle basi&lt;/a&gt;, bisogna dire che la sua sintassi e la sua logica non riesce più a mantenere il passo con i tempi.&lt;/p&gt;

&lt;p&gt;Non mi credi?&lt;/p&gt;

&lt;p&gt;Guarda &lt;a href="https://youtu.be/8mSVgWN96N4" rel="noopener noreferrer"&gt;il nostro webinar&lt;/a&gt; per capire in quanti modi utilizzare Sass è più utile (e veloce) rispetto allo scrivere del classico CSS.&lt;/p&gt;

&lt;p&gt;Prima di scrivere questo articolo mi sono messo a cercare in lungo e in largo nella fitta rete che è Internet alla ricerca di articoli e repository GitHub contenenti intelligenti soluzioni che il &lt;em&gt;linguaggio&lt;/em&gt; Sass ha permesso di sviluppare.&lt;/p&gt;

&lt;p&gt;Quella che troverai qua sotto è una lista delle dieci librerie (o framework) che ho trovato più interessanti e che ho pensato che valesse la pena di elencare.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://skillsandmore.org/diventa-uno-skillato/" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F03%2Fdiventa-skillato.png" alt="Investi in te stesso e diventa uno Skillato oggi!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ti dico subito che se in questo elenco non trovi una delle soluzioni che tu usi con più piacere &lt;strong&gt;non esitare a farmelo notare&lt;/strong&gt; aggiungendo il link e la motivazione all’interno della sezione commenti che troverai in fondo a questo articolo.&lt;/p&gt;

&lt;p&gt;Prima di iniziare vorrei dirti che in questo articolo, piuttosto che inserire i vari link che puntano al file &lt;code&gt;.zip&lt;/code&gt;, ho preferito inserire &lt;strong&gt;i link ai singoli repository GitHub&lt;/strong&gt; in modo da permetterti di utilizzare ancora più facilmente queste soluzioni.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inverti gli elementi di un sito con Bi-App
&lt;/h2&gt;

&lt;p&gt;Ho deciso di inserire la &lt;a href="http://github.com/anasnakawa/bi-app-sass" rel="noopener noreferrer"&gt;libreria Bi-App&lt;/a&gt; come prima perché il suo funzionamento è tanto semplice quanto interessante.&lt;/p&gt;

&lt;p&gt;Ti è mai capitato di dover sviluppare un sito che sia consultabile sia per chi legge da sinistra verso destra (&lt;em&gt;left-to-right&lt;/em&gt;) e viceversa (&lt;em&gt;right-to-left&lt;/em&gt;)?&lt;/p&gt;

&lt;p&gt;Se il tuo mercato si riferisce principalmente a quello italiano molto probabilmente non è una cosa che hai fatto spesso ma sono sicuro che questa soluzione potrebbe tornare molto comoda per tutti gli sviluppatori che si trovano a realizzare portali di grosse dimensioni.&lt;/p&gt;

&lt;p&gt;Dico questo perché grazie a Bi-App avrai la possibilità di &lt;strong&gt;creare due fogli di stile&lt;/strong&gt; che permettono di adattare il tuo contenuto in base al verso di lettura del tuo utente.&lt;/p&gt;

&lt;p&gt;Dal punto di vista dello sviluppatore dovrai soltanto utilizzare i mixin di questa libreria, tu sarai libero di scrivere un singolo file Sass e nel momento della compilazione questa libreria utilizzerà i mixin che hai utilizzato per fare automaticamente tutte le operazioni di &lt;em&gt;mirroring&lt;/em&gt; al posto tuo, l’unica cosa che ti resterà da fare è richiamare il file CSS appropriato a secondo della geolocalizzazione del visitatore 😀&lt;/p&gt;

&lt;h2&gt;
  
  
  Tutti i bottoni che vuoi con… Buttons
&lt;/h2&gt;

&lt;p&gt;I bottoni sono degli elementi incredibilmente importanti in qualsiasi progetto web. Sono talmente importanti che alcune volte sono in grado di delineare i successi e gli insuccessi delle conversioni di un’azienda.&lt;/p&gt;

&lt;p&gt;Proprio per questo e molti altri motivi mi sono trovato spesso a desiderare un tool che mi aiutasse a crearli e modificarli velocemente. Per fortuna mia ho incontrato Buttons!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F03%2Fbuttons.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F03%2Fbuttons.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Molti anni fa l’unica soluzione era quella di affidarsi a un programma di grafica, o anche a un grafico di professione, e doversi poi caricare i vari file immagine per poter personalizzare il nostro layout.&lt;/p&gt;

&lt;p&gt;Oggi invece possiamo utilizzare direttamente il CSS e creare diverse versioni del pulsante utilizzando la stessa sintassi HTML.&lt;/p&gt;

&lt;p&gt;Quello che vedi qua sopra è solo un piccolo esempio di quello che puoi &lt;a href="https://github.com/loup-brun/buttons" rel="noopener noreferrer"&gt;realizzare con questa libreria&lt;/a&gt; ma ti consiglio di consultare il progetto perché sono sicuro che troverai il tipo di bottone che risponde meglio alle tue esigenze!&lt;/p&gt;

&lt;h2&gt;
  
  
  Gestisci le tue media query facilmente con @include-media
&lt;/h2&gt;

&lt;p&gt;Partiamo subito dicendo che questa libreria è nata da un’attenta analisi di librerie che erano già presenti sul mercato e viene motivata la sua creazione all’interno di un &lt;a href="https://css-tricks.com/approaches-media-queries-sass/" rel="noopener noreferrer"&gt;completo articolo su CSS-Tricks&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Esistono alternative!&lt;/p&gt;

&lt;p&gt;All’interno di questo articolo ti presento la libreria &lt;code&gt;@include-media&lt;/code&gt; ma come scoprirai dallo stesso articolo che ti ho appena presentato, esistono molte alternative.&lt;/p&gt;

&lt;p&gt;Una caratteristica che apprezzo moltissimo in questa libreria è la possibilità di inserire le media query &lt;strong&gt;direttamente all’interno del selettore che stiamo utilizzando&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Quindi, al posto di dover organizzare tutto il nostro codice per rispettare la chiamata &lt;code&gt;@media&lt;/code&gt; possiamo gestire le varie opzioni responsive mentre gestiamo le regole CSS di uno specifico elemento.&lt;/p&gt;

&lt;p&gt;Cerchiamo di fare un piccolo esempio per comprendere il suo funzionamento.&lt;/p&gt;

&lt;p&gt;Per prima cosa abbiamo la possibilità di &lt;strong&gt;creare delle variabili&lt;/strong&gt; che saranno più semplici da ricordare e richiamare al posto del classici &lt;code&gt;px&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight scss"&gt;&lt;code&gt;&lt;span class="nv"&gt;$breakpoints&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;phone&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;320px&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tablet&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;768px&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;desktop&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1024px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Come puoi vedere la dichiarazione dei vari breakpoint è molto intuitiva e sfrutta le Sass Data Map, argomento che abbiamo &lt;a href="https://skillsandmore.org/data-maps-sass/" rel="noopener noreferrer"&gt;già trattato in un precedente articolo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Ma torniamo all’uso di questa semplicissima libreria, una volta definiti i nostri breakpoint siamo in grado di richiamare le nostre media query singolarmente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight scss"&gt;&lt;code&gt;&lt;span class="k"&gt;@include&lt;/span&gt; &lt;span class="nd"&gt;media&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&amp;gt;phone"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;=tablet"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Come dicevo prima la cosa più bella è &lt;strong&gt;scrivere le nostre media query direttamente all’interno dell’elemento&lt;/strong&gt; che stiamo personalizzando.&lt;/p&gt;

&lt;p&gt;Ecco un esempio:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight scss"&gt;&lt;code&gt;&lt;span class="nc"&gt;.box&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;

  &lt;span class="k"&gt;@include&lt;/span&gt; &lt;span class="nd"&gt;media&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&amp;gt;phone"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;@include&lt;/span&gt; &lt;span class="nd"&gt;media&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&amp;gt;tablet"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;green&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;@include&lt;/span&gt; &lt;span class="nd"&gt;media&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&amp;gt;desktop"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Come puoi vedere con i tuoi stessi occhi, a conferma di quanto detto precedentemente, utilizzando questa libreria non avrai la necessità di creare singolarmente le media query e di ripetere i selettori dei tuoi elementi al suo interno.&lt;/p&gt;

&lt;p&gt;Tutto quello che devi fare è inserire il mixin &lt;code&gt;media&lt;/code&gt; all’interno dell’elemento e scrivere le modifiche necessarie.&lt;/p&gt;

&lt;p&gt;Sono sicuro che adesso ti stai chiedendo come verrà sviluppato il foglio CSS risultante, studiamolo assime:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;min-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;321px&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nc"&gt;.box&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;min-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;769px&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nc"&gt;.box&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;green&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;min-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1025px&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nc"&gt;.box&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ed ecco che, una volta compilato il nostro codice Sass, avremo a disposizione le &lt;strong&gt;singole media query e i selettori&lt;/strong&gt; che rispondono a tale misura verranno spostati al suo interno.&lt;/p&gt;

&lt;h4&gt;
  
  
  Preoccupato per il numero di media query?
&lt;/h4&gt;

&lt;p&gt;Se la quantità di media query presenti all’interno del tuo file CSS ti preoccupa potresti dare un’occhiata a &lt;a href="https://www.npmjs.com/package/gulp-merge-media-queries" rel="noopener noreferrer"&gt;questo pacchetto npm&lt;/a&gt; la cui unica funzionalità è quella di raggruppare tutte le media query inserite nel progetto.&lt;/p&gt;

&lt;p&gt;In quest’ultima frase ho utilizzato il plurale perché grazie a Sass non dovremo preoccuparci di &lt;em&gt;quante media query vengono create&lt;/em&gt;, probabilmente starai pensando che il CSS generato sarà un casino con moltissime media query ripetute a giro per il documento.&lt;/p&gt;

&lt;p&gt;Invece grazie al pacchetto npm appena presentato possiamo dormire sonni tranquilli perché sarà in grado di “spostare” i vari selettori all’interno delle media query adeguate senza andare ad appesantire inutilmente il CSS risultante.&lt;/p&gt;

&lt;h2&gt;
  
  
  Crea animazioni keyframe facilmente con Kf
&lt;/h2&gt;

&lt;p&gt;Ormai dovresti essere abituato ai nostri articoli e continui richiami nei confronti degli effetti di animazione che puoi creare con il tuo codice, ma in questo contesto ti voglio presentare una libreria che ti permetterà di utilizzare una serie di effetti pronti all’uso.&lt;/p&gt;

&lt;p&gt;Se sei un assiduo lettore del nostro blog ti dovresti ricordare che &lt;a href="https://skillsandmore.org/animate-elementi-html-css/" rel="noopener noreferrer"&gt;non troppo tempo fa abbiamo parlato di&lt;/a&gt;&lt;code&gt;Animate.css&lt;/code&gt;, un semplice insieme di classi CSS che ti permettono di animare facilmilmente i tuoi elementi.&lt;/p&gt;

&lt;p&gt;Ma con Kf stiamo prendendo un approccio differente e molto più personalizzabile.&lt;/p&gt;

&lt;p&gt;Come spesso accade quando lavoriamo con Sass questa soluzione permette di avere un alto grado di personalizzazione sia lato codice che negli effetti veri e propri.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/mil/kf-sass" rel="noopener noreferrer"&gt;Questa libreria&lt;/a&gt; ci permette di utilizzare un’innovativa sintassi per la realizzazione dei nostri effetti, sintassi che risulta essere molto più semplice da gestire &lt;a href="https://skillsandmore.org/animazioni-css-keyframe/" rel="noopener noreferrer"&gt;rispetto al classico&lt;/a&gt;&lt;code&gt;@keyframes&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight scss"&gt;&lt;code&gt;&lt;span class="nc"&gt;.single-selector&lt;/span&gt; &lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nv"&gt;$animation-map&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;margin-left&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0ms&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0%&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="m"&gt;3000ms&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;@include&lt;/span&gt; &lt;span class="nd"&gt;kf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$animation-map&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Anche questa libreria, come la precedente dedicata alle media query, utilizza le Data Map che risultano molto interessanti e come puoi vedere, ci permettono di dichiarare delle animazioni anche per singole proprietà.&lt;/p&gt;

&lt;p&gt;Ovviamente non sei obbligato a selezionare soltanto un elemento, potresti selezionare gli elementi contenuti ed animarli singolarmente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight scss"&gt;&lt;code&gt;&lt;span class="nc"&gt;.multiple-selectors&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nv"&gt;$animation-map&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s1"&gt;'.a'&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;margin-left&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0ms&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0%&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="m"&gt;3000ms&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'.b'&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;margin-left&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0ms&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="m"&gt;2000ms&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0%&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;@include&lt;/span&gt; &lt;span class="nd"&gt;kf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$animation-map&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Insomma sicuramente si tratta di una libreria diversa da quelle copia/incolla come per esempio Animate.css però se guardiamo l’altro lato della medaglia scopriamo &lt;strong&gt;un altissimo livello di personalizzazione&lt;/strong&gt; e una profonda gestione sulle nostre animazioni.&lt;/p&gt;

&lt;h2&gt;
  
  
  Migliora il ritmo verticale con TypeSettings
&lt;/h2&gt;

&lt;p&gt;Riflettiamo per un attimo, in molti ci ricordano che sul web &lt;em&gt;Content is King&lt;/em&gt; ma se questo contenuto &lt;strong&gt;non è facilmente consultabile&lt;/strong&gt; da parte dei nostri lettori, come facciamo a dargli tutta questa importanza?&lt;/p&gt;

&lt;p&gt;Tutti gli sforzi che facciamo nella creazione del nostro contenuto verranno semplicemente sprecati!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F03%2Ftypesettings-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F03%2Ftypesettings-1.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ecco che &lt;a href="http://github.com/ianrose/typesettings" rel="noopener noreferrer"&gt;una libreria come Typesettings&lt;/a&gt; viene in nostro soccorso offrendoci una serie di mixin che ci aiutano a gestire al meglio lo spazio verticale presente nel nostro testo.&lt;/p&gt;

&lt;p&gt;Questa può sembrare una cosa da poco ma ti invito a controllare il semplice codice di configurazione per scoprire tutto il lavoro che ti verrà semplificato grazie all’integrazione di questa libreria!&lt;/p&gt;

&lt;h2&gt;
  
  
  Griglie verticali con SassLine
&lt;/h2&gt;

&lt;p&gt;Devo confessarti che a prima vista &lt;a href="http://github.com/designbyjake/sassline" rel="noopener noreferrer"&gt;questa libreria&lt;/a&gt; può sembrare molto simile alla precedente, in fin dei conti anche lei si occupa di realizzare delle griglie verticali ma ad essere onesto, durante le fasi di test, ho trovato incredibilmente utile la possibilità di &lt;strong&gt;visualizzare la griglia&lt;/strong&gt; che stavo generando.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F03%2Fsassline.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F03%2Fsassline.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Con l’immagine che ti ho appena inserito volevo mostrarti la semplicità di utilizzo. Ad ogni modifica avrai la possibilità di visualizzare la griglia e osservare nel dettaglio il ritmo verticale della tua pagina.&lt;/p&gt;

&lt;h2&gt;
  
  
  Griglie responsive grazie a Susy
&lt;/h2&gt;

&lt;p&gt;Passiamo dalle griglie verticali a griglie ancora più interessanti, quelle che &lt;strong&gt;permettono di creare il layout&lt;/strong&gt; della tua pagina web.&lt;/p&gt;

&lt;p&gt;Abbiamo già analizzato Susy all’interno del &lt;a href="https://skillsandmore.org/courses/conosci-sass-e-migliora-i-tuoi-css/" rel="noopener noreferrer"&gt;corso dedicato a Sass&lt;/a&gt; dove ti ho mostrato quanto sia semplice da configurare e da utilizzare.&lt;/p&gt;

&lt;p&gt;La sua caratteristica più interessante è il fatto di poter gestire &lt;strong&gt;sia la griglia che le modifiche responsive del tuo layout&lt;/strong&gt; con dei mixin semantici!&lt;/p&gt;

&lt;p&gt;Praticamente non avrai più bisogno di utilizzare dei nomi senza senso e neanche ti dovrai &lt;em&gt;sbattere&lt;/em&gt; a calcolare le larghezze da utilizzare con la tua calcolatrice.&lt;/p&gt;

&lt;p&gt;Grazie a Susy non dovrai far altro che &lt;a href="https://skillsandmore.org/data-maps-sass/" rel="noopener noreferrer"&gt;creare la tua Sass Map&lt;/a&gt;, in grado di definire le basi del layout per il tuo progetto, e potrai delegare tutta la complessità ai mixin di questa soluzione.&lt;/p&gt;

&lt;p&gt;Susy si è aggiornato!&lt;/p&gt;

&lt;p&gt;Susy ha raggiunto la versione 3 e adesso, al posto di utilizzare i float, ci permette di dichiarare facilmente le &lt;a href="https://skillsandmore.org/css-grid-layout/" rel="noopener noreferrer"&gt;nostre CSS Grid&lt;/a&gt; o strutturare il layout con &lt;a href="https://skillsandmore.org/corso/crea-i-nuovi-layout-con-flexbox/" rel="noopener noreferrer"&gt;Flexbox&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Vai a &lt;a href="http://github.com/ericam/susy/" rel="noopener noreferrer"&gt;scoprire il progetto su GitHub&lt;/a&gt; e approfondisci la sua conoscenza all’interno del nostro corso 😉&lt;/p&gt;

&lt;h2&gt;
  
  
  Scut, una raccolta di utility per i tuoi CSS
&lt;/h2&gt;

&lt;p&gt;Passiamo dalle librerie dedicate a una singola soluzione ad altre che ti &lt;strong&gt;permettono di fare un po’ tutto&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Scut è una soluzione incredibilmente interessante perché oltre ai mixin ci mette a disposizione delle funzioni che ci facilitano alcuni compiti.&lt;/p&gt;

&lt;p&gt;Ti è mai capitato di dover creare un progetto in &lt;code&gt;em&lt;/code&gt; o &lt;code&gt;rem&lt;/code&gt; per il quale avevi a disposizione soltanto un file Photoshop?&lt;/p&gt;

&lt;p&gt;Sono sicuro che sei diventato matto a calcolare le varie corrispondenze.&lt;/p&gt;

&lt;p&gt;Ebbene, grazie a Scut tutto questo sarà un lontano ricordo perché offre le funzioni &lt;code&gt;px-to-em&lt;/code&gt; e &lt;code&gt;px-to-rem&lt;/code&gt; che fanno proprio questo!&lt;/p&gt;

&lt;p&gt;Ovviamente al suo interno troverai anche dei mixin utili che, ad esempio, ti permettono di poter creare dei &lt;a href="https://davidtheclark.github.io/scut/circle.html" rel="noopener noreferrer"&gt;cerchi&lt;/a&gt; o &lt;a href="https://davidtheclark.github.io/scut/triangle.html" rel="noopener noreferrer"&gt;triangoli&lt;/a&gt; con del semplice codice Sass.&lt;/p&gt;

&lt;p&gt;Ti consiglio caldamente di &lt;a href="http://github.com/davidtheclark/scut" rel="noopener noreferrer"&gt;dare un’occhiata a questa soluzione&lt;/a&gt; perché offre utili strumenti anche per la gestione del layout delle tue pagine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Separatori angolari con Angled Edges
&lt;/h2&gt;

&lt;p&gt;Esistono sicuramente molte soluzioni che ci permettono di creare degli elementi &lt;em&gt;storti&lt;/em&gt; all’interno delle pagine web che creiamo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F03%2Fangled-edge.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskillsandmore.org%2Fwp-content%2Fuploads%2F2019%2F03%2Fangled-edge.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In alcuni casi vengono usate direttamente immagini in SVG che si adattano bene alle varie risoluzioni degli schermi mentre altre soluzioni utilizzano gli pseudo-elementi &lt;code&gt;::before&lt;/code&gt; e &lt;code&gt;::after&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Non conosci gli pseudo-elementi?&lt;/p&gt;

&lt;p&gt;Leggi subito il nostro &lt;a href="https://skillsandmore.org/comprendere-pseudo-elementi/" rel="noopener noreferrer"&gt;articolo dedicato&lt;/a&gt; e scopri in quanti modi questi possono aiutarti durante lo sviluppo!&lt;/p&gt;

&lt;p&gt;Per applicare un effetto come quello mostrato nell’immagine precedente non devi far altro che usare il mixin dedicato. Ecco un esempio:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight scss"&gt;&lt;code&gt;&lt;span class="k"&gt;@include&lt;/span&gt; &lt;span class="nd"&gt;angled-edge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$location&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$hypotenuse&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$fill&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Grazie a questa sintassi vengono create delle immagini SVG che vengono inserite all’interno del CSS grazie a &lt;code&gt;data:image&lt;/code&gt;, una soluzione che ci permette di creare le immagini leggendo il codice SVG inserito.&lt;/p&gt;

&lt;p&gt;Ti consiglio di provare &lt;a href="https://github.com/josephfusco/angled-edges" rel="noopener noreferrer"&gt;questa libreria&lt;/a&gt; perché con un semplice mixin ci aiuta a creare accattivanti soluzioni per i nostri layout.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bourbon, una libreria piena di sorprese!
&lt;/h2&gt;

&lt;p&gt;Ti confesso che uso raramente questa libreria, ero un grande fan di Compass ma da quando sono venuto a conoscenza dell’interruzione nel suo sviluppo ho iniziato a cercare alternative.&lt;/p&gt;

&lt;p&gt;Sono entrato in un vero e proprio universo perché in molti hanno cercato di colmare il vuoto lasciato da Compass ma in &lt;a href="https://github.com/thoughtbot/bourbon/" rel="noopener noreferrer"&gt;Bourbon&lt;/a&gt; ho trovato tutto quello che cercavo.&lt;/p&gt;

&lt;p&gt;Infatti Bourbon è una libreria incredibilmente leggera che offre moltissimi mixin utili come quello per &lt;a href="https://www.bourbon.io/docs/latest/#ellipsis" rel="noopener noreferrer"&gt;aggiungere i puntini di sospensione&lt;/a&gt; nei nostri testi oppure quello che ci permette di &lt;a href="https://www.bourbon.io/docs/latest/#all-buttons" rel="noopener noreferrer"&gt;modificare facilmente i nostri pulsanti&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Oltre a questo un’apprezzata caratteristica di questa libreria è che risulta essere &lt;strong&gt;facilmente estendibile&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Infatti il focus principale di Bourbon è quello di &lt;strong&gt;presentare mixin e funzioni di comune utilità&lt;/strong&gt; ma non si spinge alla creazione di griglie o di elementi complessi.&lt;/p&gt;

&lt;p&gt;Per queste necessità il team di Bourbon ha creato le seguenti librerie specifiche:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Neat –&lt;/strong&gt; semplice gestione delle griglie (usa ancora i &lt;code&gt;float&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bitter –&lt;/strong&gt; una soluzione molto simile al &lt;code&gt;Normalize.css&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Insomma se non hai tempo da perdere e vuoi una libreria all-in-one che ti può aiutare nel tuo lavoro hai trovato quello che ti serve 😃&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusioni
&lt;/h2&gt;

&lt;p&gt;Con questo articolo abbiamo visto alcune delle soluzioni più interessanti che, grazie a Sass, potrai integrare e utilizzare nel tuo lavoro di tutti i giorni.&lt;/p&gt;

&lt;p&gt;Abbiamo visto più o meno tutte le utility che ci permettono di velocizzare la creazione dei nostri progetti ma ci tengo a dirti che &lt;strong&gt;non abbiamo visto tutto&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;Ci sono altre librerie che non ho messo in evidenza in questo articolo ma che puoi trovare in &lt;a href="https://github.com/Famolus/awesome-sass" rel="noopener noreferrer"&gt;questo repository&lt;/a&gt; costantemente aggiornato.&lt;/p&gt;

&lt;p&gt;Quello che ho voluto fare con la stesura di questo articolo è aiutarti a capire che &lt;strong&gt;conoscere Sass è veramente importante per il tuo lavoro&lt;/strong&gt; , in fin dei conti ormai è uno standard e anche se i CSS stanno aggiungendo nuove soluzioni interessanti (come per esempio le &lt;a href="https://skillsandmore.org/variabili-css-limiti-utilizzi/" rel="noopener noreferrer"&gt;Custom Properties&lt;/a&gt;) difficilmente raggiungerà lo stesso livello di Sass.&lt;/p&gt;

&lt;p&gt;Se senti la necessità di metterti in pari e vuoi scoprire al meglio questa soluzione non posso fare a meno di ricordarti che &lt;a href="https://skillsandmore.org/courses/conosci-sass-e-migliora-i-tuoi-css/" rel="noopener noreferrer"&gt;abbiamo realizzato un corso appositamente per te&lt;/a&gt;, spero che lo troverai utile e che migliorerà veramente il tuo lavoro; proprio come ha fatto per il sottoscritto.&lt;/p&gt;

&lt;p&gt;Se poi hai altre librerie che usi quotidianamente e delle quali mi vuoi parlare, non esitare a farlo sfruttando i commenti che trovi qua sotto, io e gli altri lettori te ne saremo infinitamente grati!&lt;/p&gt;

&lt;p&gt;L'articolo &lt;a href="https://skillsandmore.org/librerie-sass-sviluppo-css/" rel="noopener noreferrer"&gt;10 librerie Sass che ti aiutano nello sviluppo CSS&lt;/a&gt; proviene da &lt;a href="https://skillsandmore.org" rel="noopener noreferrer"&gt;SkillsAndMore&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>css</category>
      <category>scss</category>
      <category>libreriesass</category>
    </item>
    <item>
      <title>Rendi compatibile il tuo tema con Gutenberg!</title>
      <dc:creator>Andrea Barghigiani</dc:creator>
      <pubDate>Tue, 26 Feb 2019 08:59:31 +0000</pubDate>
      <link>https://dev.to/andreabarghigiani/rendi-compatibile-il-tuo-tema-con-gutenberg-142d</link>
      <guid>https://dev.to/andreabarghigiani/rendi-compatibile-il-tuo-tema-con-gutenberg-142d</guid>
      <description>&lt;p&gt;Recentemente abbiamo assistito a una grande trasformazione nel mondo WordPress, dalla versione 5 è stato introdotto &lt;strong&gt;un nuovo editor&lt;/strong&gt; che ha completamente rivoluzionato la piattaforma. Sei sicuro che il tuo tema sia compatibile?&lt;/p&gt;

&lt;p&gt;Se come molti altri Skillati sei uno sviluppatore e &lt;a href="https://skillsandmore.org/corso/crea-il-tuo-primo-tema-wordpress/"&gt;crei temi WordPress&lt;/a&gt; per i tuoi clienti questa novità ti interessa da vicino e in questo articolo ti spiego come rendere compatibili i tuoi temi!&lt;/p&gt;

&lt;p&gt;Dalla versione 5 la piattaforma WordPress trovi &lt;strong&gt;incluso un nuovo editor&lt;/strong&gt; che sostituisce il classico TinyMCE, conosciamolo da vicino.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--toqCarW0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2018/04/confronto-tinymce-gutenberg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--toqCarW0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2018/04/confronto-tinymce-gutenberg.png" alt="Confronto della UX tra TinyMCE e Gutenberg, il nuovo editor WordPress" width="880" height="339"&gt;&lt;/a&gt;TinyMCE e Gutenberg a confronto&lt;/p&gt;

&lt;p&gt;Con questa immagine mostro il cambiamento che hanno subito gli editor nelle nuove installazioni WordPress, un cambiamento per il quale dobbiamo preparare noi stessi e i nostri clienti.&lt;/p&gt;

&lt;p&gt;Se ti stai chiedendo se questa novità &lt;strong&gt;può essere disattivata la risposta è sì&lt;/strong&gt; e potrai farlo in qualsiasi momento installando &lt;a href="http://it.wordpress.org/plugins/classic-editor/"&gt;questo plugin&lt;/a&gt;, anche se a mio avviso sarebbe molto meglio abbracciare questa novità, capire quali benefici porta per i nostri clienti e indagare sugli step necessari per rendere il nostro tema compatibile con questo nuovo strumento.&lt;/p&gt;

&lt;p&gt;All’interno di questo articolo troverai le stesse informazioni che ho condiviso durante un workshop allo scorso &lt;a href="http://2018.torino.wordcamp.org/session/come-preparare-il-tuo-tema-allavvento-di-gutenberg/"&gt;WordCamp Torino 2018&lt;/a&gt; ma che mi trovo a pubblicare all’interno di questa piattaforma perché non è stato possibile farne una registrazione.&lt;/p&gt;

&lt;p&gt;Ti spiegerò nel dettaglio i passaggi necessari per rendere il tuo tema compatibile con Gutenberg ma se sei più interessato al &lt;em&gt;gist&lt;/em&gt; della questione puoi consultare &lt;a href="http://www.slideshare.net/AndreaBarghigiani/prepara-il-tema-wordpress-per-gutenberg"&gt;le slide dell’intervento&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Che cosa è Gutenberg?
&lt;/h2&gt;

&lt;p&gt;Partiamo con il rispondere alla domanda delle domande cercando di capire che cosa propone questo nuovo editor.&lt;/p&gt;

&lt;p&gt;Chiunque abbia usato il classico editor WordPress sa che è senza ombra di dubbio un buon editor e che può essere arricchito di funzionalità attraverso una serie di plugin aggiuntivi presenti nel &lt;a href="http://wordpress.org/plugins/search/tinymce/"&gt;repository di plugin&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Se ancora non lo sai, l’editor che sei abituato a utilizzare durante la scrittura dei tuoi articoli o nelle più recenti widget Testo che sono state &lt;a href="http://wordpress.org/news/2017/06/evans/"&gt;introdotte nella versione 4.8&lt;/a&gt; &lt;strong&gt;non è uno strumento sviluppato all’interno dell’ecosistema WordPress&lt;/strong&gt; , piuttosto durante la creazione di questo CMS è stato scelto di utilizzare un potente editor WYSWYG Open Source: &lt;a href="http://www.tinymce.com/"&gt;TinyMCE&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Data la diffusione di WordPress (oggi &lt;a href="http://w3techs.com/technologies/overview/content_management/all"&gt;utilizzato nel 33.3%&lt;/a&gt; dei siti web) e la necessità di avere strumenti in grado di aiutare anche il novizio a creare pagine web le strade di TinyMCE e della nostra amata piattaforma si sono iniziate a dividere.&lt;/p&gt;

&lt;p&gt;Non mi fraintendere TinyMCE è un ottimo editor di testo e ha una grande compatibilità che consente di creare documenti web leggibili praticamente su qualsiasi dispositivo ma le necessità degli utenti WordPress si sono evolute nel tempo, &lt;strong&gt;evolute in una direzione diversa da quella del classico editor&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Per anni gli sviluppatori WordPress hanno cercato di colmare queste lacune introducendo gli shortcode nel tentativo di &lt;em&gt;“semplificare”&lt;/em&gt; l’inserimento di elementi complessi all’interno di questo editor.&lt;/p&gt;

&lt;p&gt;Sono nati shortcode per tutte le necessità, alcuni servono per inserire contenuti presenti nella stessa piattaforma (come per esempio i &lt;a href="http://docs.woocommerce.com/document/woocommerce-shortcodes/#section-8"&gt;prodotti di un eCommerce&lt;/a&gt;), altri invece per richiamare risorse esterne come video YouTube (oggi molto meno utilizzati &lt;a href="http://codex.wordpress.org/Embeds"&gt;grazie agli oEmbed&lt;/a&gt;) mentre altri ancora venivano usati soltanto per scopi stilistici (&lt;a href="https://skillsandmore.org/page-builder-sviluppatore/"&gt;molto utilizzati purtroppo da Page Builder&lt;/a&gt; costruiti male).&lt;/p&gt;

&lt;p&gt;Insomma tutta questa frammentazione ha &lt;strong&gt;rappresentato un grande problema di usabilità&lt;/strong&gt; e se aggiungiamo a questo l’impossibilità di avere un’anteprima istantanea del nostro lavoro si capisce da soli che l’esperienza di creazione all’interno di WordPress è stata fin ora limitata.&lt;/p&gt;

&lt;p&gt;Ecco perché oggi viene sviluppato il nuovo editor che ha preso il nome di Gutenberg!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JiaPPScw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2018/06/gutenberg-blueprint.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JiaPPScw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2018/06/gutenberg-blueprint.png" alt="Lo sketch di base all'interno del quale è stata presentata l'idea Gutenberg" width="880" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;L’intenzione di questo nuovo editor è quella di &lt;strong&gt;semplificare la creazione delle pagine web&lt;/strong&gt; all’interno di questa piattaforma.&lt;/p&gt;

&lt;p&gt;Inizialmente il suo approccio era dedicato a trasformare l’esperienza di inserimento contenuto in qualcosa di ancora più intuitivo (da qui il nome), creando un’esperienza di scrittura simile a Medium e adottate oggi anche su altre piattaforme, come per esempio LinkedIn.&lt;/p&gt;

&lt;p&gt;Durante le sue evoluzioni però si è scoperto che &lt;strong&gt;gli utenti volevano qualcosa in più&lt;/strong&gt; , al giorno d’oggi chi scrive sul web non vuole soltanto inserire del testo ma desidera costruire &lt;strong&gt;contenuti dinamici e accattivanti&lt;/strong&gt; che li aiutino a mantenere viva l’attenzione dei lettori.&lt;/p&gt;

&lt;p&gt;Ed ecco che è stato introdotto il concetto di _ &lt;strong&gt;Blocchi&lt;/strong&gt; _&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;All’interno di Gutenberg &lt;strong&gt;ogni tipologia di contenuto è un blocco&lt;/strong&gt;. Non importa se stiamo parlando di un titolo, un paragrafo, un’immagine, un video YouTube o una Call to Action; &lt;strong&gt;tutto è un blocco&lt;/strong&gt; e tutto viene inserito con gli stessi strumenti.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0_QWZVkS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2019/02/gutenberg-blocchi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0_QWZVkS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2019/02/gutenberg-blocchi.jpg" alt="Scrivi i tuoi articoli con il nuovo Gutenberg, al suo interno tutto è un blocco e devi imparare a usare una sola interfaccia!" width="880" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Questo approccio, che può piacere o meno, è diventato &lt;strong&gt;uno standard all’interno di creazione contenuti in WordPress&lt;/strong&gt; e ci sta aiutando ad allontanarci sempre più velocemente alle vecchie soluzioni degli shortcode offrendo, al tempo stesso, delle funzionalità che non avevamo ancora visto in un editor.&lt;/p&gt;

&lt;p&gt;In questo articolo ti ho promesso di spiegarti come sia possibile &lt;strong&gt;preparare il tuo tema all’avvento di Gutenberg&lt;/strong&gt; ed è quello che sono pronto a fare.&lt;/p&gt;

&lt;p&gt;Se vuoi seguire passo passo i blocchi di codice che ti presenterò più avanti ti consiglio di installare l’ultima versione di WordPress, in questo modo potrai testare dal vivo tutte le modifiche che faremo in questo articolo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Come preparare i tuoi temi WordPress a Gutenberg
&lt;/h2&gt;

&lt;p&gt;La prima buona notizia è che qualsiasi tema &lt;strong&gt;è compatibile con tutti i blocchi Gutenberg&lt;/strong&gt;. Questo perché la funzione utilizzata per richiamarli all’interno delle nostre pagine è sempre &lt;code&gt;the_content()&lt;/code&gt;, la classica funzione che &lt;a href="https://skillsandmore.org/wp-query-wordpress-loop-personalizzati/"&gt;qualsiasi loop&lt;/a&gt; richiama per ottenere i contenuti salvati nel database collegati a una pagina.&lt;/p&gt;

&lt;p&gt;Però se questo articolo non finisce qua un motivo c’è, anche se i nostri temi sono in grado di richiamare i contenuti salvati con questo nuovo editor non necessariamente sono in grado di sfruttare tutte le nuove caratteristiche.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xMhCk2JK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2019/02/tema-compatibile-gutenberg.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xMhCk2JK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2019/02/tema-compatibile-gutenberg.jpg" alt="Per rendere il tuo tema compatibile al 100% con Gutenberg devi aggiungere il supporto e applicare minime modifiche." width="880" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ecco perché ho organizzato il restante contenuto in diverse sezioni che ti permetteranno di consultare velocemente gli argomenti di tuo interesse, partendo da un piccolo consiglio sull’organizzazione del tuo codice.&lt;/p&gt;

&lt;h3&gt;
  
  
  Aumentiamo l’organizzazione separando i file
&lt;/h3&gt;

&lt;p&gt;Creare un tema WordPress non è più semplice come una volta e basta guardare l’evoluzione del nostro &lt;code&gt;functions.php&lt;/code&gt; per capire che è fin troppo semplice arrivare a diverse migliaia di righe di codice, cosa che rende la consultazione del file stesso molto pesante.&lt;/p&gt;

&lt;p&gt;Per questo motivo prima ancora di parlare di come attivare alcune delle funzionalità più interessanti di questo nuovo editor voglio fornirti un suggerimento che puoi trovare anche nel codice del &lt;code&gt;functions.php&lt;/code&gt; del &lt;a href="http://github.com/Automattic/_s/blob/master/functions.php#L153"&gt;famoso tema _s&lt;/a&gt;, ovvero voglio consigliarti di &lt;strong&gt;separare il tuo codice&lt;/strong&gt; all’interno di diversi file inclusi nel tuo tema in modo da poter mantenere il tuo codice il più organizzato possibile.&lt;/p&gt;

&lt;p&gt;Per fare questo tutto quello che devi fare è fare affidamento alla funzione &lt;code&gt;get_template_direcoty()&lt;/code&gt; e richiamare il file all’interno del quale dichiarerai tutte le personalizzazioni e le funzioni che hanno a che fare con Gutenberg.&lt;/p&gt;

&lt;p&gt;Seguendo l’esempio di _s anche io ho creato una cartella &lt;code&gt;inc/&lt;/code&gt; interna al mio tema e ho aggiunto quanto segue:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="c1"&gt;// Inserito soltanto per la colorazione della sintassi&lt;/span&gt;
&lt;span class="cd"&gt;/**
 * Codice aggiuntivo per Gutenberg
 */&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nb"&gt;defined&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'GUTENBERG_VERSION'&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="nf"&gt;get_template_directory&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s1"&gt;'/inc/gutenberg.php'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ti consiglio di inserire tutto il codice relativo a Gutenberg nel file &lt;code&gt;inc/gutenberg.php&lt;/code&gt;, o almeno questo è l’approccio che prendiamo in questo articolo.&lt;/p&gt;

&lt;p&gt;Ti consiglio di seguire questa buona pratica perché ti aiuterà a &lt;strong&gt;mantenere più organizzato il codice del tema&lt;/strong&gt; e in futuro sarà più semplice poter modificare le porzioni necessarie.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dichiara la compatibilità con le immagini wide e full
&lt;/h3&gt;

&lt;p&gt;Adesso che abbiamo &lt;em&gt;preparato il campo&lt;/em&gt; e creato un file interamente dedicato alla compatibilità con Gutenberg è giunto il momento di iniziare a personalizzare il tema con una delle funzionalità più richieste: la possibilità di inserire delle immagini &lt;em&gt;“out-of-shape”&lt;/em&gt; che si estendono oltre la larghezza del nostro contenuto.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wh_iBMKT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2018/06/esempio-immagine-fuori-contenuto-1024x666.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wh_iBMKT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2018/06/esempio-immagine-fuori-contenuto-1024x666.jpg" alt="L'immagine mostra un esempio di come sia possibile mostrare un'immagine più larga del contenuto con Gutenberg" width="880" height="572"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Come puoi notare qua sopra, l’immagine è leggermente più larga rispetto al contenuto della pagina e anche se gli sviluppatori di temi hanno cercato hack e soluzioni alternative per raggiungere questo risultato, grazie a Gutenberg &lt;strong&gt;tutto questo è nativo&lt;/strong&gt; e potrà essere attivato a discrezione dell’utente.&lt;/p&gt;

&lt;p&gt;Questo perché Gutenberg inserisce &lt;strong&gt;due nuovi allineamenti&lt;/strong&gt; per le nostre immagini, anche se in realtà sono allineamenti disponibili in altri blocchi.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9_hbYs8O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2018/06/align-wide-full-icons.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9_hbYs8O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2018/06/align-wide-full-icons.png" alt="Le icone che presentano i nuovi allineamenti wide e full introdotti da Gutenberg" width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Queste sono le due nuove icone che verranno inserite all’interno degli allineamenti dei blocchi compatibili e come suggerisce il nome stesso permettono di inserire un blocco rendendolo più grande del contenuto (wide) oppure gli forniscono la possibilità di occupare tutta la larghezza della finestra (full).&lt;/p&gt;

&lt;p&gt;Da questa definizione è ovvio pensare che questi tipi di allineamento funzionano benissimo all’interno di siti monocolonna ma potresti essere in grado di sfruttarli altrettanto bene.&lt;/p&gt;

&lt;p&gt;Non ti spaventare, è solo CSS!&lt;/p&gt;

&lt;p&gt;Questi nuovi allineamenti sono soltanto delle regole CSS che potrai personalizzare attraverso il tuo tema.&lt;/p&gt;

&lt;p&gt;Venendo al succo della questione è giunto il momento di chiedersi: _ &lt;strong&gt;come posso attivare questa nuova feature?&lt;/strong&gt; _&lt;/p&gt;

&lt;p&gt;È giusto porsi questa domanda perché anche se hai installato Gutenberg nella tua piattaforma o se usi l’ultima versione WordPress, questi nuovi allineamenti non saranno presenti nel tuo tema.&lt;/p&gt;

&lt;p&gt;Come già successo per altre nuove funzionalità messe a disposizione dei temi, come per esempio l’uso del &lt;em&gt;title-tag&lt;/em&gt;, delle &lt;em&gt;post thumbnails&lt;/em&gt; o delle strutture in HTML5 (giusto per citarne alcune), il tema che stiamo sviluppando &lt;strong&gt;deve dichiarare il proprio supporto a una specifica caratteristica&lt;/strong&gt; e può farlo grazie alla funzione &lt;code&gt;add_theme_support()&lt;/code&gt; dichiarando al suo interno quale funzionalità supporterà.&lt;/p&gt;

&lt;p&gt;Nel caso dei nuovi allineamenti wide e full non dovrai far altro che aprire il tuo file &lt;code&gt;inc/gutenberg.php&lt;/code&gt; e inserire quanto segue:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="c1"&gt;// Inserito soltanto per la colorazione della sintassi&lt;/span&gt;
&lt;span class="cd"&gt;/**
 * Dichiaro supporto per le funzionalità di Gutenberg
 */&lt;/span&gt;
&lt;span class="nf"&gt;add_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'after_setup_theme'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'sam_add_gutenberg_support'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;sam_add_gutenberg_support&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;

  &lt;span class="c1"&gt;// Dichiaro supporto per allineamenti wide e full&lt;/span&gt;
  &lt;span class="nf"&gt;add_theme_support&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'align-wide'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se sei uno sviluppatore WordPress esperto dovresti esserti accorto di una cosa, per usare &lt;code&gt;add_theme_support()&lt;/code&gt; non è necessario alcun hook e magari la presenza di &lt;code&gt;add_action( 'after_setup_theme')&lt;/code&gt; ti ha incuriosito (o fatto storcere il naso).&lt;/p&gt;

&lt;p&gt;Quando si tratta di Gutenberg preferisco inserirlo perché, come vedrai negli altri esempi, torneremo a dichiarare nuove compatibilità con le funzionalità Gutenberg e per mantenere il mio codice organizzato al meglio ho preferito fare in questo modo.&lt;/p&gt;

&lt;p&gt;Adesso che abbiamo dichiarato la compatibilità con questi nuovi allineamenti puoi usarli subito?&lt;/p&gt;

&lt;p&gt;Beh per usarli puoi anche usarli perché Gutenberg presenterà le due nuove icone relative agli allineamenti ma WordPress non fa altro che aggiungere le classi &lt;code&gt;.alignwide&lt;/code&gt; e &lt;code&gt;.alignfull&lt;/code&gt;, come per qualsiasi altro allineamento, saremo noi sviluppatori che dovremmo aggiungere il codice CSS che permette di applicare questo effetto.&lt;/p&gt;

&lt;p&gt;Piccoli aggiornamenti&lt;/p&gt;

&lt;p&gt;In queste ultime settimane è stata aggiunta la possibilità di richiamare gli stili dei blocchi presenti in Gutenberg anche nel frontend attraverso l’istruzione &lt;code&gt;add_theme_support('wp-block-styles')&lt;/code&gt; offrendo un buon punto di partenza da personalizzare.&lt;/p&gt;

&lt;p&gt;Se vuoi personalizzare questi nuovi allineamenti puoi usare il seguente codice come punto di partenza.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.alignfull&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;margin-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;50%&lt;/span&gt; &lt;span class="err"&gt;–&lt;/span&gt; &lt;span class="m"&gt;50vw&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;margin-right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;50%&lt;/span&gt; &lt;span class="err"&gt;–&lt;/span&gt; &lt;span class="m"&gt;50vw&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1000%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.alignwide&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;margin-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;25%&lt;/span&gt; &lt;span class="err"&gt;–&lt;/span&gt; &lt;span class="m"&gt;25vw&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;margin-right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;25%&lt;/span&gt; &lt;span class="err"&gt;–&lt;/span&gt; &lt;span class="m"&gt;25vw&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1000%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.alignwide&lt;/span&gt; &lt;span class="nt"&gt;img&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;span class="nc"&gt;.alignfull&lt;/span&gt; &lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Questo è il codice CSS che sto usando nei miei esperimenti per dare la possibilità alle immagini di &lt;em&gt;crescere oltre il contenuto&lt;/em&gt;. Sentiti libero di usarlo come meglio credi.&lt;/p&gt;

&lt;h3&gt;
  
  
  Proponi una palette di colori dedicata
&lt;/h3&gt;

&lt;p&gt;Adesso che abbiamo visto la prima accattivante funzionalità introdotta da Gutenberg, continuiamo il nostro viaggio andando a scoprirne un’altra che da sviluppatore non aprezzo molto ma che riconosco essere incredibilmente utile per tutti gli utenti che desiderano aggiungere colore alle proprie pagine.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tZT6hXJ2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2018/06/gutenberg-change-color-1024x526.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tZT6hXJ2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2018/06/gutenberg-change-color-1024x526.jpg" alt="Un blocco paragrafo creato in Gutenberg modificando il colore del testo e quello di sfondo" width="880" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anche questa è una funzionalità molto utile perché, assieme alle Drop Cap, aiuta l’utente a &lt;strong&gt;creare delle sezioni molto più accattivanti&lt;/strong&gt; all’interno dei propri articoli.&lt;/p&gt;

&lt;p&gt;La scelta del colore è molto importante e anche se esistono degli avvisi che ci aiutano a scegliere il contrasto migliore, il mio timore è che si potranno sempre fare “dei macelli”.&lt;/p&gt;

&lt;p&gt;La cosa buona è che come creatori di temi adesso &lt;strong&gt;possiamo suggerire dei colori specifici&lt;/strong&gt; e inibire la possibilità di aggiungerne di nuovi!&lt;/p&gt;

&lt;p&gt;L’esperienza è molto semplice perché basta tornare sul nostro &lt;code&gt;inc/gutenberg.php&lt;/code&gt; e aggiungere una nuova &lt;code&gt;add_theme_support()&lt;/code&gt; alla funzione precedente. Ecco il codice completo all’interno del quale è presente anche la dichiarazione di compatibilità con i nuovi allineamenti.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="c1"&gt;// Inserito soltanto per la colorazione della sintassi&lt;/span&gt;

&lt;span class="cd"&gt;/**
 * Dichiaro supporto per le funzionalità di Gutenberg
 */&lt;/span&gt;
&lt;span class="nf"&gt;add_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'after_setup_theme'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'sam_add_gutenberg_support'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;sam_add_gutenberg_support&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;

    &lt;span class="c1"&gt;// Dichiaro supporto per allineamenti wide e full&lt;/span&gt;
    &lt;span class="nf"&gt;add_theme_support&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'align-wide'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// Dichiaro i colori da usare nel template&lt;/span&gt;
    &lt;span class="nf"&gt;add_theme_support&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'editor-color-palette'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
          &lt;span class="s1"&gt;'name'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Verde SAM'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="s1"&gt;'slug'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'verde-sam'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="s1"&gt;'color'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'#1ABC9C'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
          &lt;span class="s1"&gt;'name'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Arancione SAM'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="s1"&gt;'slug'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'arancione-sam'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="s1"&gt;'color'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'#EF6C00'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
          &lt;span class="s1"&gt;'name'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Bianco'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="s1"&gt;'slug'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'white'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="s1"&gt;'color'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'#FFF'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
          &lt;span class="s1"&gt;'name'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Grigio'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="s1"&gt;'slug'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'grigio'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="s1"&gt;'color'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'#333'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// Disabilito la scelta dei colori&lt;/span&gt;
    &lt;span class="nf"&gt;add_theme_support&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'disable-custom-colors'&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;La dichiarazione dei colori suggeriti avviene in pieno stile WordPress, come già visto per le &lt;a href="https://skillsandmore.org/wp-query-wordpress-loop-personalizzati/"&gt;WP_Query&lt;/a&gt;, basta un array per suggerire i dettagli relativi al nome suggerito.&lt;/p&gt;

&lt;p&gt;Per esempio se uso i colori &lt;em&gt;Arancione SAM&lt;/em&gt; come sfondo e &lt;em&gt;Bianco&lt;/em&gt; per il colore del testo nella creazione di un blocco di testo WordPress genererà per me le seguenti classi che potrò personalizzare nel mio CSS: &lt;code&gt;.has-arancione-sam-background-color&lt;/code&gt; e &lt;code&gt;.has-bianco-color&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Z40QZel6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2019/02/blocco-sfondo-arancione-testo-bianco.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Z40QZel6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2019/02/blocco-sfondo-arancione-testo-bianco.jpg" alt="" width="880" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Oltre a questo abbiamo anche &lt;strong&gt;disabilitato la possibilità di scegliere altri&lt;/strong&gt; colori, in questo modo il nostro cliente utilizzerà soltanto i colori definiti &lt;em&gt;in-brand&lt;/em&gt;. Questo è stato possibile grazie a &lt;code&gt;add_theme_support('disable-custom-colors' )&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gestisci le misure standard di un testo
&lt;/h3&gt;

&lt;p&gt;Man mano che ci addentriamo nelle nuove funzionalità introdotte da questo potente editor le caratteristiche che vediamo possono sembrare semplici ma è proprio l’approccio più corretto dato che saranno utilizzate quotidianamente dagli utenti WordPress.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zBN-WBqM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2019/02/impostazioni-grandezza-testo.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zBN-WBqM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://skillsandmore.org/wp-content/uploads/2019/02/impostazioni-grandezza-testo.jpg" alt="Puoi cambiare la grandezza dei tuoi testi grazie a Gutenberg." width="407" height="294"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Con questo editor gli utenti possono anche &lt;strong&gt;modificare la grandezza del testo&lt;/strong&gt; usando uno slider o i comodi bottoni che ne indicano la &lt;em&gt;taglia&lt;/em&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.has-small-font-size&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="err"&gt;…&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.has-large-font-size&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="err"&gt;…&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.has-larger-font-size&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="err"&gt;…&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In questo modo se l’utente sceglie una &lt;em&gt;taglia&lt;/em&gt; di font possiamo tranquillamente sovrascrivere gli stili di Gutenberg con le classi che ti ho presentato qua sopra.&lt;/p&gt;

&lt;p&gt;Questo è un passaggio molto semplice che comunque volevo presentarti per facilitarti il lavoro.&lt;/p&gt;

&lt;h3&gt;
  
  
  Comprendi la struttura generale di un blocco
&lt;/h3&gt;

&lt;p&gt;Ora se devo essere onesto con te, non ci sono altre grandi funzionalità per le quali dobbiamo dichiarare la nostra compatibilità con Gutenberg.&lt;/p&gt;

&lt;p&gt;Fintanto che gli stili inclusi in &lt;code&gt;add_theme_support('wp-block-styles')&lt;/code&gt; non copriranno tutti i blocchi, almeno quelli considerati presentazionali come descritto su GitHub, noi sviluppatori dovremo sviluppare gli stili per presentare al meglio il contenuto inserito dal nostro utente.&lt;/p&gt;

&lt;p&gt;Per questo motivo ritengo che sia una buona occasione studiare velocemente come Gutenberg crea questi blocchi nel frontend del sito.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;figure&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"wp-block-image aligncenter"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"…"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"…"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"wp-image-39"&lt;/span&gt; &lt;span class="na"&gt;srcset=&lt;/span&gt;&lt;span class="s"&gt;"…"&lt;/span&gt; &lt;span class="na"&gt;sizes=&lt;/span&gt;&lt;span class="s"&gt;"…"&lt;/span&gt; &lt;span class="na"&gt;width=&lt;/span&gt;&lt;span class="s"&gt;"1000"&lt;/span&gt; &lt;span class="na"&gt;height=&lt;/span&gt;&lt;span class="s"&gt;"500"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;figcaption&amp;gt;&lt;/span&gt;…&lt;span class="nt"&gt;&amp;lt;/figcaption&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/figure&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Uno dei primi blocchi che voglio analizzare è quello dedicato all’inserimento di un’immagine.&lt;/p&gt;

&lt;p&gt;A differenza del vecchio TinyMCE, con il nuovo editor l’inserimento di un’immagine con didascalia ci mette a disposizione un elemento &lt;code&gt;&amp;lt;figure&amp;gt;&lt;/code&gt; che contiene la classe &lt;code&gt;.wp-block-image&lt;/code&gt; e le altre classi dedicate all’allineamento.&lt;/p&gt;

&lt;p&gt;Per nostra fortuna però Gutenberg viene già con altri interessanti blocchi dedicati alle immagini perché oltre agli allineamenti che abbiamo già conosciuto, ci offre un blocco del tutto nuovo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"wp-block-cover-image has-background-dim-40 has-background-dim"&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"background-image:url(…)"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"wp-block-cover-image-text"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;…&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Il codice presentato qua sopra viene generato dal nuovo blocco &lt;em&gt;Copertina&lt;/em&gt;, un blocco che per la prima volta ci permette di &lt;strong&gt;scrivere sulle immagini&lt;/strong&gt; e creare anche accattivanti effetti di parallasse!&lt;/p&gt;

&lt;p&gt;Oltre alla classe &lt;code&gt;.wp-block-cover-image&lt;/code&gt; questo elemento presenta altre classi molto interessanti come &lt;code&gt;.has-background-dim&lt;/code&gt; e &lt;code&gt;.has-background-dim-40&lt;/code&gt; che ci permettono di personalizzare questo elemento grazie alle impostazioni dedicate presenti nell’editor.&lt;/p&gt;

&lt;p&gt;In questo caso le classi aggiuntive permettono di &lt;strong&gt;aggiungere un livello più scuro sopra l’immagine e impostare la sua trasperenza al 40%&lt;/strong&gt; ma in altri casi, come nel paragrafo azzurro presentato precedentemente, permettono di passare ben altre informazioni senza dover aggiungere alcun attributo &lt;code&gt;style&lt;/code&gt; ai nostri elementi.&lt;/p&gt;

&lt;p&gt;Forse hai già capito come mai ti sto presentando così tanti esempi di blocchi nel frontend ma lascia spazio per un ultimo blocco di codice.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;blockquote&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"wp-block-quote"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;…&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;cite&amp;gt;&lt;/span&gt;…&lt;span class="nt"&gt;&amp;lt;/cite&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/blockquote&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Da sempre citare qualcuno è una parte integrante della nostra scrittura. Ecco perché il nuovo Gutenberg ci offre un blocco che rispetta anche la corretta sintassi di utilizzo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusioni
&lt;/h2&gt;

&lt;p&gt;Gutenberg è un progetto in continua evoluzione e in un solo anno sono state create ben 30 release, quindi ti posso assicurare che &lt;strong&gt;questo non è un post definitivo&lt;/strong&gt; e che man mano tornerò a parlare più nel dettaglio di questo strumento perché farà parte della nostra piattaforma preferita.&lt;/p&gt;

&lt;p&gt;Già ora ci sarebbero alcune interessanti funzionalità che vorrei descriverti ma dato che abbiamo già superato le 2500 parole ritengo che sia il momento giusto di salutarci e lasciarti l’opportunità di farmi sapere che ne pensi.&lt;/p&gt;

&lt;p&gt;Io mi sto documentando molto su questo strumento perché voglio capire meglio come sia possibile &lt;strong&gt;creare i nostri blocchi&lt;/strong&gt; e lasciare da parte tutti i vecchi shortcode e widget che nei prossimi anni andranno in pensione.&lt;/p&gt;

&lt;p&gt;Stavo anche valutando la possibilità di creare un corso dedicato a questo argomento.&lt;/p&gt;

&lt;p&gt;Tu che ne pensi?&lt;/p&gt;

&lt;p&gt;Vale la pena per te imparare a creare i tuoi blocchi e integrare questo strumento all’interno dei tuoi temi o sarà una cosa che disattiverai all’interno delle installazioni WordPress dei tuoi clienti?&lt;/p&gt;

&lt;p&gt;L'articolo &lt;a href="https://skillsandmore.org/rendi-compatibile-il-tuo-tema-con-gutenberg/"&gt;Rendi compatibile il tuo tema con Gutenberg!&lt;/a&gt; proviene da &lt;a href="https://skillsandmore.org"&gt;SkillsAndMore&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>wordpress</category>
    </item>
    <item>
      <title>Comprendi MySQL in WordPress e ottimizza le query</title>
      <dc:creator>Andrea Barghigiani</dc:creator>
      <pubDate>Sat, 28 Jul 2018 08:56:50 +0000</pubDate>
      <link>https://dev.to/andreabarghigiani/comprendi-mysql-in-wordpress-e-ottimizza-le-query-57m8</link>
      <guid>https://dev.to/andreabarghigiani/comprendi-mysql-in-wordpress-e-ottimizza-le-query-57m8</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fv7ei245i7046rhrgxc2p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fv7ei245i7046rhrgxc2p.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Foreword:&lt;/em&gt; So che su dev.to vengono condivisi principalmente articoli in inglese ma vorrei iniziare a condividere delle porzioni di articoli che pubblico su &lt;a href="https://skillsandmore.org/" rel="noopener noreferrer"&gt;SkillsAndMore&lt;/a&gt; per vedere se l'audience italiana di questa community li apprezza. Fatemi sapere che ne pensate con un commento ;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Leggi l'articolo completo:&lt;/strong&gt; &lt;a href="https://skillsandmore.org/comprendere-mysql-wordpress/" rel="noopener noreferrer"&gt;https://skillsandmore.org/comprendere-mysql-wordpress/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;WordPress è sicuramente una piattaforma molto potente che permette a chiunque di creare il proprio sito web e &lt;strong&gt;offre agli sviluppatori un gran numero di funzioni&lt;/strong&gt; che richiamano automaticamente gli elementi di una pagina, ma c’è qualcosa che si cela dietro le quinte e che è meglio che tu conosca nel dettaglio.&lt;/p&gt;

&lt;p&gt;Alcune funzioni come &lt;code&gt;the_title()&lt;/code&gt; o &lt;code&gt;the_content()&lt;/code&gt; ci permettono di inserire rispettivamente il titolo e il contenuto di uno specifico articolo o pagina e semplificano sicuramente il nostro lavoro. Devi sapere che queste informazioni provengono dal database MySQL che salva al suo interno tutte le informazioni relative alla tua installazione WordPress.&lt;/p&gt;

&lt;p&gt;Il database MySQL è un componente essenziale per la tua installazione WordPress, in molte occasioni mi riferisco a questo come alla memoria di un sito web perché al suo interno vengono salvate tutte le informazioni relative all’installazione e al suo utilizzo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduzione alle tabelle WordPress
&lt;/h2&gt;

&lt;p&gt;I database possono contenere al loro interno diverse tabelle che organizzano le informazioni contenute grazie all’aiuto di righe e colonne. Qua sotto puoi vedere una piccola porzione della tabella &lt;code&gt;wp_posts&lt;/code&gt; e a breve ti spiego come è organizzato l’intero database WordPress.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskills-25umnrtpwpmcfs5cixx.netdna-ssl.com%2Fwp-content%2Fuploads%2F2013%2F09%2Fcontenuto-tabella-wp_posts.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fskills-25umnrtpwpmcfs5cixx.netdna-ssl.com%2Fwp-content%2Fuploads%2F2013%2F09%2Fcontenuto-tabella-wp_posts.jpg" alt="Esempio tabella wp_posts in WordPress"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Le tabelle servono a definire delle aree particolari all’interno delle quali si desidera salvare un determinato tipo di informazione. Facciamo un esempio dal vivo, poco fa ti ho detto che WordPress è in grado di salvare un gran numero di informazioni, tra i primi elementi che dicevo erano presenti gli articoli.&lt;/p&gt;

&lt;p&gt;Come ormai dovresti sapere, ogni articolo ha diverse sezioni come: titolo, corpo, categorie, tag e qualsiasi altro campo che il tuo tema o un plugin ti permette di aggiungere.&lt;/p&gt;

&lt;p&gt;Per esempio dopo aver scritto il tuo articolo, quando premi per la prima volta il bottone salva WordPress andrà a inserire alcune informazioni (chiamati anche record nel gergo dei database) all’interno della tabella &lt;code&gt;wp_posts&lt;/code&gt; mentre altre verranno salvate all’interno di &lt;code&gt;wp_postmeta&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quante tabelle ha WordPress?
&lt;/h2&gt;

&lt;p&gt;Se devo essere sincero, la struttura del database di questa piattaforma non è molto complessa, infatti in un’installazione di base troveremo uno schema di questo tipo (tra parentesi trovi il nome delle tabelle che troverai nel tuo database MySQL):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Articoli&lt;/strong&gt; (&lt;code&gt;wp_posts&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Commenti&lt;/strong&gt; (&lt;code&gt;wp_comments&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Utenti&lt;/strong&gt; (&lt;code&gt;wp_users&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Meta&lt;/strong&gt; A&lt;code&gt;rticoli&lt;/code&gt; (wp_postmeta)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Meta&lt;/strong&gt; C&lt;code&gt;ommenti&lt;/code&gt; (wp_commentmeta)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Meta&lt;/strong&gt; U&lt;code&gt;tenti&lt;/code&gt; (wp_usermeta)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Opzioni&lt;/strong&gt; (&lt;code&gt;wp_options&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Link&lt;/strong&gt; (&lt;code&gt;wp_links&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tassonomie&lt;/strong&gt; (&lt;code&gt;wp_termmeta&lt;/code&gt;, &lt;code&gt;wp_terms,wp_term_taxonomy&lt;/code&gt;, &lt;code&gt;wp_term_relationship&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Come puoi vedere, con solo 12 tabelle WordPress è in grado di funzionare offrendo già un gran numero di servizi!&lt;/p&gt;

&lt;h2&gt;
  
  
  Come fare una query MySQL in WordPress
&lt;/h2&gt;

&lt;p&gt;Chi ha sviluppato siti in PHP e MySQL prima dell’avvento dei CMS Open Source, si ricorderà benissimo la funzione &lt;code&gt;mysql_query()&lt;/code&gt; (oggi addirittura deprecata) che permetteva di inviare una query al database MySQL e salvare il risultato all’interno di una variabile per usarla successivamente all’interno della pagina.&lt;/p&gt;

&lt;p&gt;Che tu ti ricordi o meno la presenza di questa funzione, il mio intento era soltanto quello di farti capire che &lt;strong&gt;con il linguaggio PHP abbiamo alcune funzioni che permettono di collegarsi al database&lt;/strong&gt; mentre grazie a WordPress ne abbiamo altre.&lt;/p&gt;

&lt;p&gt;Le prime che mi vengono in mente sono:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;$wpdb-&amp;gt;get_var()&lt;/code&gt;&lt;/strong&gt; – grazie al metodo &lt;code&gt;get_var()&lt;/code&gt; è possibile inserire una query SQL, selezionare la colonna e la riga interessata per ottenere il valore cercato;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;$wpdb-&amp;gt;get_row()&lt;/code&gt;&lt;/strong&gt; – con questa sarà invece possibile selezionare una intera riga. Ad esempio, potresti avere l’&lt;code&gt;id&lt;/code&gt; di un utente e utilizzare questo metodo per andare a prendere delle informazioni presenti nella sua riga;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;$wpdb-&amp;gt;get_col()&lt;/code&gt;&lt;/strong&gt; – invece di una riga, con questo puoi usare la tua SQL per selezionare soltanto una colonna.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nella &lt;a href="https://codex.wordpress.org/it:Riferimento_classi/wpdb" rel="noopener noreferrer"&gt;pagina del Codex&lt;/a&gt; troverai moltre altre funzioni utili e magari anche più adatte ai tuoi scopi ma siamo qua per capire come WordPress può essere di nostro aiuto soprattutto se non abbiamo a nostra disposizione grandi conoscenze MySQL.&lt;/p&gt;

&lt;h2&gt;
  
  
  L’aiuto delle Classi WP_*
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Ogni Loop non è altro che una query MySQL generata automaticamente&lt;/strong&gt; dalla piattaforma WordPress.&lt;/p&gt;

&lt;p&gt;Sicuramente le query generate da uno sviluppatore esperto saranno più ottimizzate rispetto a quelle generate da una macchia (infatti spesso una macchina non può battere un essere umano in creatività), ma questo rappresenta un vantaggio per tutti noi piccoli sviluppatori che si trovano a lavorare con clienti che &lt;a href="https://skillsandmore.org/consigli-alzare-fatturato/" rel="noopener noreferrer"&gt;richiedono sempre di più ma sono disposti a spendere sempre meno&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Come puoi vedere WordPress ha pensato un pò a tutto e grazie alle cache sarai in grado di ottimizzare il tuo lavoro.&lt;/p&gt;

&lt;h1&gt;
  
  
  Vieni a leggere l'articolo completo!
&lt;/h1&gt;

&lt;p&gt;Questa è soltanto una porzione dell'articolo pubblicato su &lt;a href="https://skillsandmore.org" rel="noopener noreferrer"&gt;SkillsAndMore&lt;/a&gt;. Se ti ho incuriosito ti consiglio di venire a leggere &lt;a href="https://skillsandmore.org/comprendere-mysql-wordpress/" rel="noopener noreferrer"&gt;questo&lt;/a&gt; o gli altri articoli presenti all'interno del &lt;a href="https://skillsandmore.org/blog/" rel="noopener noreferrer"&gt;nostro blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Se invece desideri &lt;strong&gt;migliorare le tue conoscenze sullo sviluppo web&lt;/strong&gt; puoi venire a consultare i &lt;a href="https://skillsandmore.org/corsi/" rel="noopener noreferrer"&gt;nostri corsi&lt;/a&gt;. Ci impegniamo molto a pubblicare dei contenuti che siano utili e pratici in modo da aiutarti nel tuo lavoro.&lt;/p&gt;

&lt;h3&gt;
  
  
  Piaciuto l'articolo?
&lt;/h3&gt;

&lt;p&gt;Fammelo sapere lasciando il tuo commento o una tua reazione! &lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>mysql</category>
    </item>
  </channel>
</rss>
