<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>wordpress cms - Web Design | Creazione Siti Internet</title>
	<atom:link href="https://www.mrtux.it/tag/wordpress-cms/feed" rel="self" type="application/rss+xml" />
	<link>https://www.mrtux.it</link>
	<description>Sviluppo Siti Web - Assistenza WordPress</description>
	<lastBuildDate>Fri, 22 May 2026 19:25:15 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://www.mrtux.it/wp-content/uploads/2022/06/favicon-150x150.png</url>
	<title>wordpress cms - Web Design | Creazione Siti Internet</title>
	<link>https://www.mrtux.it</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Creare Tema WordPress: Guida 101 allo Sviluppo Completo</title>
		<link>https://www.mrtux.it/creare-tema-wordpress-guida-101-allo-sviluppo-completo</link>
					<comments>https://www.mrtux.it/creare-tema-wordpress-guida-101-allo-sviluppo-completo#respond</comments>
		
		<dc:creator><![CDATA[Emilio Petrozzi]]></dc:creator>
		<pubDate>Fri, 22 May 2026 19:13:22 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[creare tema wordpress]]></category>
		<category><![CDATA[css wordpress]]></category>
		<category><![CDATA[guida wordpress]]></category>
		<category><![CDATA[php wordpress]]></category>
		<category><![CDATA[sviluppo temi wordpress]]></category>
		<category><![CDATA[Sviluppo WordPress]]></category>
		<category><![CDATA[tema wordpress]]></category>
		<category><![CDATA[template wordpress]]></category>
		<category><![CDATA[wordpress cms]]></category>
		<category><![CDATA[WordPress Development]]></category>
		<guid isPermaLink="false">https://www.mrtux.it/?p=3406</guid>

					<description><![CDATA[Creare un tema WordPress da zero è più semplice di quanto pensi, e in questa guida ti mostrerò passo dopo passo tutto ciò che devi sapere per sviluppare il tuo primo tema professionale e funzionante. Che tu sia un principiante curioso o uno sviluppatore in cerca di nuove competenze, lo sviluppo temi WP ti aprirà porte verso un controllo totale sul design e sulle funzionalità del tuo sito.]]></description>
										<content:encoded><![CDATA[<h2>Come Creare un Tema WordPress: Guida Completa per Principianti</h2>
<p>Creare un <strong>tema WordPress</strong> da zero è una delle competenze più gratificanti che uno sviluppatore web possa acquisire. Non solo ti permette di avere il pieno controllo sul design e sulle funzionalità del tuo sito, ma ti offre anche una comprensione profonda di come funziona WordPress internamente.</p>
<p>In questa guida ti accompagnerò passo dopo passo nel processo di sviluppo di un tema WordPress funzionale, partendo dalle basi fino ad arrivare alla creazione di un tema completo e professionale.</p>
<hr>
<h2>Perché Creare un Tema WordPress Personalizzato</h2>
<p>Prima di immergerci nel codice, è importante capire perché potresti voler creare il tuo tema WordPress invece di utilizzarne uno preesistente.</p>
<p>Un tema personalizzato ti offre:</p>
<ul>
<li><strong>Controllo totale</strong> sull’aspetto e sul comportamento del sito</li>
<li><strong>Codice pulito</strong> senza funzionalità superflue che rallentano il caricamento</li>
<li><strong>Possibilità di branding</strong> per creare un’identità unica</li>
<li><strong>Apprendimento approfondito</strong> del funzionamento di WordPress</li>
<li><strong>Manutenzione semplificata</strong> perché conosci ogni parte del codice</li>
</ul>
<p>Se stai cercando di entrare nel mondo dello sviluppo WordPress o vuoi creare un sito web professionale, imparare a sviluppare temi è un investimento che vale sicuramente il tempo dedicato.</p>
<hr>
<h2>Prerequisiti per lo Sviluppo di Temi WordPress</h2>
<p>Prima di iniziare, assicurati di avere una buona comprensione dei seguenti concetti:</p>
<h3>Competenze Tecniche Necessarie</h3>
<ul>
<li><strong>HTML e CSS</strong>: La base di qualsiasi sito web. Devi sapere come strutturare una pagina e stilizzarla.</li>
<li><strong>PHP</strong>: WordPress è costruito su PHP, quindi una conoscenza base è essenziale per comprendere come funziona il sistema di template.</li>
<li><strong>JavaScript</strong>: Utile per aggiungere interattività, anche se non strettamente necessario per un tema base.</li>
</ul>
<h3>Strumenti di Sviluppo</h3>
<ul>
<li>Un <strong>server locale</strong> come XAMPP, MAMP o Local by Flywheel</li>
<li>Un <strong>editor di codice</strong> come Visual Studio Code, PhpStorm o Sublime Text</li>
<li>Un <strong>browser moderno</strong> con strumenti di sviluppo (Chrome DevTools)</li>
<li>Accesso a un’<strong>installazione WordPress</strong> locale</li>
</ul>
<hr>
<h2>Configurare l’Ambiente di Sviluppo Locale</h2>
<p>Il primo passo concreto è configurare un ambiente di sviluppo locale dove poter testare il tuo tema senza compromettere un sito live.</p>
<h3>Installare Local by Flywheel</h3>
<p><strong>Local</strong> è una delle opzioni più semplici per creare un ambiente WordPress locale:</p>
<ol>
<li>Scarica e installa Local dal sito ufficiale</li>
<li>Crea un nuovo sito WordPress</li>
<li>Assegna un nome al progetto</li>
<li>Attendi che l’installazione venga completata</li>
<li>Accedi alla bacheca WordPress</li>
</ol>
<p>Una volta completata l’installazione, avrai un sito WordPress funzionante su cui testare il tuo tema in tempo reale.</p>
<h3>Struttura delle Cartelle dei Temi</h3>
<p>WordPress cerca i temi in una struttura specifica. I temi si trovano in:</p>
<pre><code>wp-content/themes/nome-del-tuo-tema/
</code></pre>
<p>Questa cartella sarà la tua area di lavoro principale. Al suo interno creerai tutti i file necessari per il tuo tema.</p>
<hr>
<h2>Creare i File Essenziali del Tema</h2>
<p>Ogni tema WordPress richiede alcuni file fondamentali per funzionare. Iniziamo creando la struttura base.</p>
<h3>1. Il File style.css</h3>
<p>Il file <code>style.css</code> è il cuore del tuo tema. Non contiene solo CSS, ma anche le informazioni necessarie a WordPress per riconoscere e visualizzare il tema nel pannello di amministrazione.</p>
<pre><code class="language-css">/<em>
Theme Name: Il Mio Primo Tema
Theme URI: https://esempio.com
Author: Il Tuo Nome
Author URI: https://esempio.com
Description: Un tema WordPress personalizzato creato da zero
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: mio-primo-tema
</em>/
</code></pre>
<p>Questo commento iniziale è obbligatorio. Senza di esso, WordPress non sarà in grado di riconoscere il tuo tema.</p>
<h3>2. Il File functions.php</h3>
<p>Il file <code>functions.php</code> è dove definisci le funzionalità del tema, registri script, stili, menu, widget e molto altro.</p>
<pre><code class="language-php">&lt;?php
// Aggiungiamo il supporto per vari elementi di WordPress
function mio_tema_setup() {
    // Supporto per il titolo del sito
    add_theme_support('title-tag');

    // Supporto per le immagini in evidenza
    add_theme_support('post-thumbnails');

    // Supporto per il logo personalizzato
    add_theme_support('custom-logo');

    // Registriamo un menu di navigazione
    register_nav_menus(array(
        'primary' =&gt; __('Menu Principale', 'mio-primo-tema'),
        'footer' =&gt; __('Menu Footer', 'mio-primo-tema'),
    ));
}
add_action('after_setup_theme', 'mio_tema_setup');

// Carichiamo gli stili e gli script
function mio_tema_scripts() {
    wp_enqueue_style('mio-tema-style', get_stylesheet_uri());
    wp_enqueue_script('mio-tema-script', get_template_directory_uri() . '/js/main.js', array(), '1.0.0', true);
}
add_action('wp_enqueue_scripts', 'mio_tema_scripts');
</code></pre>
<h3>3. Il File index.php</h3>
<p>Il file <code>index.php</code> è il template di fallback di WordPress. Viene utilizzato quando non esiste un template più specifico per un determinato contenuto.</p>
<pre><code class="language-php">&lt;?php get_header(); ?&gt;

&lt;main class="site-main"&gt;
    &lt;?php if (have_posts()) : while (have_posts()) : the_post(); ?&gt;

        &lt;article id="post-&lt;?php the_ID(); ?&gt;" &lt;?php post_class(); ?&gt;&gt;
            &lt;header class="entry-header"&gt;
                &lt;h2 class="entry-title"&gt;
                    &lt;a href="&lt;?php the_permalink(); ?&gt;"&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;
                &lt;/h2&gt;
                &lt;div class="entry-meta"&gt;
                    &lt;span class="posted-on"&gt;&lt;?php echo get_the_date(); ?&gt;&lt;/span&gt;
                &lt;/div&gt;
            &lt;/header&gt;

            &lt;div class="entry-content"&gt;
                &lt;?php the_content(); ?&gt;
            &lt;/div&gt;
        &lt;/article&gt;

    &lt;?php endwhile; else : ?&gt;
        &lt;p&gt;&lt;?php esc_html_e('Nessun contenuto trovato.', 'mio-primo-tema'); ?&gt;&lt;/p&gt;
    &lt;?php endif; ?&gt;
&lt;/main&gt;

&lt;?php get_footer(); ?&gt;
</code></pre>
<hr>
<h2>Comprendere la Gerarchia dei Template</h2>
<p>WordPress utilizza un sistema di <strong>gerarchia dei template</strong> per determinare quale file PHP visualizzare per ogni tipo di contenuto. Comprendere questo sistema è fondamentale per creare un tema completo.</p>
<h3>Ordine di Priorità dei Template</h3>
<p>Ecco l’ordine in cui WordPress cerca i template:</p>
<table>
<thead>
<tr>
<th>Tipo di Contenuto</th>
<th>Template Principale</th>
<th>Fallback</th>
</tr>
</thead>
<tbody>
<tr>
<td>Homepage</td>
<td>front-page.php</td>
<td>home.php → index.php</td>
</tr>
<tr>
<td>Articoli</td>
<td>single.php</td>
<td>singular.php → index.php</td>
</tr>
<tr>
<td>Pagine</td>
<td>page-{slug}.php → page-{id}.php</td>
<td>page.php → index.php</td>
</tr>
<tr>
<td>Categorie</td>
<td>category-{slug}.php → category-{id}.php</td>
<td>archive.php → index.php</td>
</tr>
<tr>
<td>Tag</td>
<td>tag-{slug}.php → tag-{id}.php</td>
<td>archive.php → index.php</td>
</tr>
<tr>
<td>Archive autore</td>
<td>author-{nicename}.php → author-{id}.php</td>
<td>archive.php → index.php</td>
</tr>
<tr>
<td>Ricerca</td>
<td>search.php</td>
<td>index.php</td>
</tr>
<tr>
<td>404</td>
<td>404.php</td>
<td>index.php</td>
</tr>
</tbody>
</table>
<h3>Esempio Pratico: Creare header.php e footer.php</h3>
<p>Per evitare di ripetere il codice in ogni template, WordPress permette di creare file parziali riutilizzabili.</p>
<p><strong>header.php</strong></p>
<pre><code class="language-php">&lt;!DOCTYPE html&gt;
&lt;html &lt;?php language_attributes(); ?&gt;&gt;
&lt;head&gt;
    &lt;meta charset="&lt;?php bloginfo('charset'); ?&gt;"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1"&gt;
    &lt;?php wp_head(); ?&gt;
&lt;/head&gt;
&lt;body &lt;?php body_class(); ?&gt;&gt;
&lt;?php wp_body_open(); ?&gt;

&lt;header class="site-header"&gt;
    &lt;div class="container"&gt;
        &lt;?php if (has_custom_logo()) : ?&gt;
            &lt;?php the_custom_logo(); ?&gt;
        &lt;?php else : ?&gt;
            &lt;h1 class="site-title"&gt;
                &lt;a href="&lt;?php echo esc_url(home_url('/')); ?&gt;"&gt;
                    &lt;?php bloginfo('name'); ?&gt;
                &lt;/a&gt;
            &lt;/h1&gt;
        &lt;?php endif; ?&gt;

        &lt;nav class="main-navigation"&gt;
            &lt;?php wp_nav_menu(array(
                'theme_location' =&gt; 'primary',
                'container' =&gt; false,
                'menu_class' =&gt; 'nav-menu',
            )); ?&gt;
        &lt;/nav&gt;
    &lt;/div&gt;
&lt;/header&gt;

&lt;main class="site-content"&gt;
</code></pre>
<p><strong>footer.php</strong></p>
<pre><code class="language-php">&lt;/main&gt;

&lt;footer class="site-footer"&gt;
    &lt;div class="container"&gt;
        &lt;p&gt;&amp;copy; &lt;?php echo date('Y'); ?&gt; &lt;?php bloginfo('name'); ?&gt;. Tutti i diritti riservati.&lt;/p&gt;
        &lt;?php wp_nav_menu(array('theme_location' =&gt; 'footer')); ?&gt;
    &lt;/div&gt;
&lt;/footer&gt;

&lt;?php wp_footer(); ?&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<hr>
<h2>Il Loop di WordPress: Cuore del Sistema</h2>
<p>Il <strong>Loop</strong> è il meccanismo fondamentale attraverso cui WordPress recupera e visualizza i contenuti. Comprenderlo è essenziale per qualsiasi sviluppatore di temi.</p>
<h3>Struttura Base del Loop</h3>
<pre><code class="language-php">&lt;?php
// Verifichiamo se ci sono post da visualizzare
if (have_posts()) :

    // Iteriamo attraverso ogni post
    while (have_posts()) : the_post();

        // Contenuto del singolo post ?&gt;
        &lt;article id="post-&lt;?php the_ID(); ?&gt;"&gt;
            &lt;h2&gt;&lt;?php the_title(); ?&gt;&lt;/h2&gt;
            &lt;div class="post-thumbnail"&gt;
                &lt;?php if (has_post_thumbnail()) : ?&gt;
                    &lt;?php the_post_thumbnail('medium'); ?&gt;
                &lt;?php endif; ?&gt;
            &lt;/div&gt;
            &lt;div class="post-excerpt"&gt;
                &lt;?php the_excerpt(); ?&gt;
            &lt;/div&gt;
            &lt;a href="&lt;?php the_permalink(); ?&gt;"&gt;Leggi tutto&lt;/a&gt;
        &lt;/article&gt;
        &lt;?php

    endwhile;

    // Paginazione
    the_posts_pagination();

else :
    // Messaggio se non ci sono post
    echo '&lt;p&gt;Nessun contenuto disponibile.&lt;/p&gt;';

endif;
?&gt;
</code></pre>
<h3>Funzioni Utili all’Interno del Loop</h3>
<p>All’interno del Loop hai accesso a numerose funzioni:</p>
<ul>
<li><code>the_title()</code> - Visualizza il titolo del post</li>
<li><code>the_content()</code> - Visualizza il contenuto completo</li>
<li><code>the_excerpt()</code> - Visualizza un riassunto</li>
<li><code>the_permalink()</code> - Restituisce l’URL del post</li>
<li><code>the_post_thumbnail()</code> - Visualizza l’immagine in evidenza</li>
<li><code>the_date()</code> - Visualizza la data di pubblicazione</li>
<li><code>the_author()</code> - Visualizza l’autore</li>
<li><code>get_the_category()</code> - Recupera le categorie</li>
</ul>
<hr>
<h2>Template Parts: Riutilizzare il Codice</h2>
<p>I <strong>template parts</strong> sono frammenti di template che puoi includere in diversi punti del tuo tema. Questo approccio promuove il riutilizzo del codice e la manutenzione più semplice.</p>
<h3>Creare Template Parts</h3>
<p>Puoi creare template parts per elementi ripetitivi come card di articoli, header di sezioni, o qualsiasi altro componente.</p>
<p><strong>template-parts/content.php</strong></p>
<pre><code class="language-php">&lt;article id="post-&lt;?php the_ID(); ?&gt;" &lt;?php post_class('article-card'); ?&gt;&gt;
    &lt;?php if (has_post_thumbnail()) : ?&gt;
        &lt;div class="card-image"&gt;
            &lt;a href="&lt;?php the_permalink(); ?&gt;"&gt;
                &lt;?php the_post_thumbnail('large'); ?&gt;
            &lt;/a&gt;
        &lt;/div&gt;
    &lt;?php endif; ?&gt;

    &lt;div class="card-content"&gt;
        &lt;h3 class="card-title"&gt;
            &lt;a href="&lt;?php the_permalink(); ?&gt;"&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;
        &lt;/h3&gt;

        &lt;div class="card-meta"&gt;
            &lt;span class="card-date"&gt;&lt;?php echo get_the_date(); ?&gt;&lt;/span&gt;
            &lt;span class="card-author"&gt;di &lt;?php the_author(); ?&gt;&lt;/span&gt;
        &lt;/div&gt;

        &lt;div class="card-excerpt"&gt;
            &lt;?php the_excerpt(); ?&gt;
        &lt;/div&gt;

        &lt;a href="&lt;?php the_permalink(); ?&gt;" class="card-link"&gt;
            Continua a leggere →
        &lt;/a&gt;
    &lt;/div&gt;
&lt;/article&gt;
</code></pre>
<h3>Includere Template Parts nel Template</h3>
<pre><code class="language-php">&lt;?php get_template_part('template-parts/content', 'page'); ?&gt;
</code></pre>
<p>Il secondo parametro (‘page’) permette di specificare un suffisso. WordPress cercherà prima <code>content-page.php</code> e, se non esiste, ricorrerà a <code>content.php</code>.</p>
<hr>
<h2>Aggiungere Stili e Script Correttamente</h2>
<p>Un aspetto cruciale dello sviluppo temi è la gestione corretta di CSS e JavaScript. WordPress fornisce un sistema integrato per caricare risorse in modo sicuro e.performante.</p>
<h3>Best Practices per CSS e JavaScript</h3>
<pre><code class="language-php">function mio_tema_enqueue_assets() {
    // CSS principale del tema
    wp_enqueue_style(
        'mio-tema-main',
        get_stylesheet_directory_uri() . '/css/main.css',
        array(),
        '1.0.0'
    );

    // Font Google (dipendenza per main.css)
    wp_enqueue_style(
        'google-fonts',
        'https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&amp;display=swap',
        array(),
        null
    );

    // JavaScript con dipendenze
    wp_enqueue_script(
        'mio-tema-navigation',
        get_template_directory_uri() . '/js/navigation.js',
        array(),
        '1.0.0',
        true
    );

    // JavaScript condizionale (es. solo per IE)
    wp_enqueue_script(
        'html5shiv',
        'https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js',
        array(),
        '3.7.3',
        false
    );
    wp_script_add_data('html5shiv', 'conditional', 'lt IE 9');
}
add_action('wp_enqueue_scripts', 'mio_tema_enqueue_assets');
</code></pre>
<h3>Creare il File CSS Principale</h3>
<p><strong>css/main.css</strong></p>
<pre><code class="language-css">/<em> Reset di base </em>/
<em> {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/</em> Variabili CSS <em>/
:root {
    --color-primary: #2563eb;
    --color-secondary: #1e40af;
    --color-text: #1f2937;
    --color-bg: #ffffff;
    --font-main: 'Inter', sans-serif;
    --spacing-md: 1.5rem;
    --spacing-lg: 3rem;
}

/</em> Stili globali <em>/
body {
    font-family: var(--font-main);
    color: var(--color-text);
    background-color: var(--color-bg);
    line-height: 1.6;
}

/</em> Container <em>/
.container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 var(--spacing-md);
}

/</em> Header <em>/
.site-header {
    padding: var(--spacing-md) 0;
    border-bottom: 1px solid #e5e7eb;
}

.site-header .container {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

/</em> Navigazione <em>/
.nav-menu {
    display: flex;
    list-style: none;
    gap: var(--spacing-md);
}

.nav-menu a {
    text-decoration: none;
    color: var(--color-text);
    transition: color 0.3s ease;
}

.nav-menu a:hover {
    color: var(--color-primary);
}

/</em> Articoli <em>/
.article-card {
    margin-bottom: var(--spacing-lg);
    padding: var(--spacing-md);
    border-radius: 8px;
    background: #f9fafb;
}

.card-title a {
    text-decoration: none;
    color: var(--color-text);
}

/</em> Responsive */
@media (max-width: 768px) {
    .site-header .container {
        flex-direction: column;
        gap: var(--spacing-md);
    }

    .nav-menu {
        flex-direction: column;
        align-items: center;
    }
}
</code></pre>
<hr>
<h2>Personalizzare il Tema con il Customizer</h2>
<p>Il <strong>Customizer di WordPress</strong> permette agli utenti di modificare aspeketti del tema in tempo reale. Implementare il Customizer rende il tuo tema più flessibile e user-friendly.</p>
<h3>Aggiungere Opzioni al Customizer</h3>
<pre><code class="language-php">function mio_tema_customize_register($wp_customize) {
    // Sezione Colori
    $wp_customize-&gt;add_section('mio_tema_colors', array(
        'title' =&gt; __('Colori del Sito', 'mio-primo-tema'),
        'priority' =&gt; 30,
    ));

    // Impostazione colore primario
    $wp_customize-&gt;add_setting('primary_color', array(
        'default' =&gt; '#2563eb',
        'sanitize_callback' =&gt; 'sanitize_hex_color',
    ));

    $wp_customize-&gt;add_control(new WP_Customize_Color_Control($wp_customize, 'primary_color', array(
        'label' =&gt; __('Colore Primario', 'mio-primo-tema'),
        'section' =&gt; 'mio_tema_colors',
        'settings' =&gt; 'primary_color',
    )));

    // Sezione Layout
    $wp_customize-&gt;add_section('mio_tema_layout', array(
        'title' =&gt; __('Layout', 'mio-primo-tema'),
        'priority' =&gt; 35,
    ));

    // Impostazione container width
    $wp_customize-&gt;add_setting('container_width', array(
        'default' =&gt; '1200',
        'sanitize_callback' =&gt; 'absint',
    ));

    $wp_customize-&gt;add_control('container_width', array(
        'type' =&gt; 'number',
        'section' =&gt; 'mio_tema_layout',
        'label' =&gt; __('Larghezza Container (px)', 'mio-primo-tema'),
        'input_attrs' =&gt; array(
            'min' =&gt; 800,
            'max' =&gt; 1920,
            'step' =&gt; 20,
        ),
    ));
}
add_action('customize_register', 'mio_tema_customize_register');

// Applicare le impostazioni nel CSS
function mio_tema_customizer_css() {
    $primary_color = get_theme_mod('primary_color', '#2563eb');
    $container_width = get_theme_mod('container_width', '1200');
    ?&gt;
    &lt;style type="text/css"&gt;
        :root {
            --color-primary: &lt;?php echo esc_attr($primary_color); ?&gt;;
            --container-max: &lt;?php echo esc_attr($container_width); ?&gt;px;
        }
    &lt;/style&gt;
    &lt;?php
}
add_action('wp_head', 'mio_tema_customizer_css');
</code></pre>
<hr>
<h2>Creare Template Specifici</h2>
<p>Per un tema completo, dovresti creare template specifici per diversi tipi di contenuto.</p>
<h3>Template per Pagine (page.php)</h3>
<pre><code class="language-php">&lt;?php get_header(); ?&gt;

&lt;main class="page-template"&gt;
    &lt;?php while (have_posts()) : the_post(); ?&gt;

        &lt;article class="page-content"&gt;
            &lt;header class="page-header"&gt;
                &lt;h1 class="page-title"&gt;&lt;?php the_title(); ?&gt;&lt;/h1&gt;
            &lt;/header&gt;

            &lt;div class="page-body"&gt;
                &lt;?php the_content(); ?&gt;
            &lt;/div&gt;

            &lt;?php
            // Supporto per la paginazione all'interno del contenuto
            wp_link_pages(array(
                'before' =&gt; '&lt;div class="page-links"&gt;' . __('Pagine:', 'mio-primo-tema'),
                'after' =&gt; '&lt;/div&gt;',
            ));
            ?&gt;
        &lt;/article&gt;

        &lt;?php
        // Commenti (se abilitati)
        if (comments_open() || get_comments_number()) :
            comments_template();
        endif;
        ?&gt;

    &lt;?php endwhile; ?&gt;
&lt;/main&gt;

&lt;?php get_footer(); ?&gt;
</code></pre>
<h3>Template per Articoli (single.php)</h3>
<pre><code class="language-php">&lt;?php get_header(); ?&gt;

&lt;main class="single-post"&gt;
    &lt;?php while (have_posts()) : the_post(); ?&gt;

        &lt;article class="post-single"&gt;
            &lt;header class="post-header"&gt;
                &lt;?php if (has_post_thumbnail()) : ?&gt;
                    &lt;div class="post-featured-image"&gt;
                        &lt;?php the_post_thumbnail('large'); ?&gt;
                    &lt;/div&gt;
                &lt;?php endif; ?&gt;

                &lt;h1 class="post-title"&gt;&lt;?php the_title(); ?&gt;&lt;/h1&gt;

                &lt;div class="post-meta"&gt;
                    &lt;span class="post-date"&gt;
                        &lt;time datetime="&lt;?php echo get_the_date('c'); ?&gt;"&gt;
                            &lt;?php echo get_the_date(); ?&gt;
                        &lt;/time&gt;
                    &lt;/span&gt;
                    &lt;span class="post-author"&gt;
                        &lt;?php the_author_posts_link(); ?&gt;
                    &lt;/span&gt;
                    &lt;span class="post-categories"&gt;
                        &lt;?php the_category(', '); ?&gt;
                    &lt;/span&gt;
                &lt;/div&gt;
            &lt;/header&gt;

            &lt;div class="post-content"&gt;
                &lt;?php the_content(); ?&gt;
            &lt;/div&gt;

            &lt;footer class="post-footer"&gt;
                &lt;?php the_tags('&lt;div class="post-tags"&gt;&lt;strong&gt;Tag:&lt;/strong&gt; ', ', ', '&lt;/div&gt;'); ?&gt;

                &lt;?php get_template_part('template-parts/author', 'bio'); ?&gt;
            &lt;/footer&gt;
        &lt;/article&gt;

        &lt;nav class="post-navigation"&gt;
            &lt;div class="previous-post"&gt;
                &lt;?php previous_post_link('%link', '← Articolo precedente'); ?&gt;
            &lt;/div&gt;
            &lt;div class="next-post"&gt;
                &lt;?php next_post_link('%link', 'Articolo successivo →'); ?&gt;
            &lt;/div&gt;
        &lt;/nav&gt;

        &lt;?php comments_template(); ?&gt;

    &lt;?php endwhile; ?&gt;
&lt;/main&gt;

&lt;?php get_footer(); ?&gt;
</code></pre>
<h3>Template per Errori 404 (404.php)</h3>
<pre><code class="language-php">&lt;?php get_header(); ?&gt;

&lt;main class="error-404"&gt;
    &lt;div class="container"&gt;
        &lt;section class="error-404-content"&gt;
            &lt;h1 class="error-code"&gt;404&lt;/h1&gt;
            &lt;h2 class="error-title"&gt;&lt;?php esc_html_e('Pagina Non Trovata', 'mio-primo-tema'); ?&gt;&lt;/h2&gt;
            &lt;p class="error-message"&gt;
                &lt;?php esc_html_e('La pagina che stai cercando non esiste o è stata spostata.', 'mio-primo-tema'); ?&gt;
            &lt;/p&gt;

            &lt;div class="error-search"&gt;
                &lt;h3&gt;&lt;?php esc_html_e('Prova a cercare:', 'mio-primo-tema'); ?&gt;&lt;/h3&gt;
                &lt;?php get_search_form(); ?&gt;
            &lt;/div&gt;

            &lt;div class="error-links"&gt;
                &lt;a href="&lt;?php echo esc_url(home_url('/')); ?&gt;" class="btn-home"&gt;
                    &lt;?php esc_html_e('Torna alla Home', 'mio-primo-tema'); ?&gt;
                &lt;/a&gt;
            &lt;/div&gt;
        &lt;/section&gt;
    &lt;/div&gt;
&lt;/main&gt;

&lt;?php get_footer(); ?&gt;
</code></pre>
<hr>
<h2>Sicurezza e Best Practices</h2>
<p>Quando sviluppi un tema WordPress, la sicurezza deve essere sempre una priorità.</p>
<h3>Sanitizzazione e Validazione</h3>
<pre><code class="language-php">// Sanitizzazione degli input
$testo = sanitize_text_field($input);
$email = sanitize_email($input);
$url = esc_url($input);
$html = wp_kses_post($input);

// escaping dell'output
echo esc_html($testo);
echo esc_attr($attributo);
echo esc_url($link);
echo wp_kses_post($contenuto_html);
</code></pre>
<h3>Altre Best Practices</h3>
<ul>
<li><strong>Non modificare i file core di WordPress</strong></li>
<li><strong>Usa funzioni WordPress native</strong> invece di codice personalizzato quando possibile</li>
<li><strong>Implementa il supporto per la traduzione</strong> usando <code>__()</code> e <code>_e()</code></li>
<li><strong>Evita queries personalizzate complesse</strong> nel template; usa invece hooks e filtri</li>
<li><strong>Mantieni il codice modulare</strong> usando template parts e funzioni specifiche</li>
</ul>
<hr>
<h2>Testare e Distribuire il Tema</h2>
<p>Prima di rendere disponibile il tuo tema, è essenziale testarlo accuratamente.</p>
<h3>Checklist per i Test</h3>
<ul>
<li>[ ] Il tema si attiva senza errori</li>
<li>[ ] Tutti i template funzionano correttamente</li>
<li>[ ] I menu di navigazione sono visualizzati</li>
<li>[ ] Le immagini in evidenza vengono visualizzate</li>
<li>[ ] I commenti funzionano</li>
<li>[ ] La paginazione è corretta</li>
<li>[ ] Il Customizer funziona</li>
<li>[ ] Il tema è responsive su diversi dispositivi</li>
<li>[ ] Non ci sono errori PHP o JavaScript nella console</li>
<li>[ ] Il tema rispetta gli standard WordPress</li>
</ul>
<h3>Strumenti di Test</h3>
<ul>
<li><strong>Theme Check</strong>: Plugin che verifica la conformità agli standard WordPress</li>
<li><strong>Query Monitor</strong>: Per debuggare query database e performance</li>
<li><strong>Browser DevTools</strong>: Per testare CSS e JavaScript</li>
<li><strong>Theme Unit Test</strong>: Dataset di test per verificare la compatibilità</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrtux.it/creare-tema-wordpress-guida-101-allo-sviluppo-completo/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
