Che cos’è un tema child WordPress e come crearlo

 

un Tema child WordPress, di cosa stiamo parlando ?

ti sei mai trovato nella situazione di aver aggiornato il tema e tutte le tue modifiche sono andate perse ? No ? beh sono contentissimo purtroppo a me tantissimo tempo fa è capitato e ho dovuto rifare tutto da capo o ho preso i file di backup (ora non ricordo come ne sono uscito vincitore)

Creare un tema child, ci permette di modificare e/o aggiungere funzionalità al tuo tema (parent) senza dover sovrascrivere alcun file, andando a salvaguardare i nostri lavori durante la fase di aggiornamento.

Quando dobbiamo creare un tema child WordPress?

beh la risposta è semplice, bisogna sempre creare un tema child WordPress i motivi quali sono :

  • se dobbiamo lavorare sui file del tema.
  • se stiamo dando un progetto a un nostro cliente/committente bisogna attenerci sempre ai standard, sia se in futuro ci riandremo a lavorare sia se lasceremo il progetto a dei nostri collaboratori.
  • se stiamo lavorando in Team, per permettere a tutti noi di evitare errori.

Come si crea un tema child WordPress?

Andiamo nella cartella wp-content/themes, e creiamo una cartella che avrà come nomenclatura il nome del tema (parent) + la string ‘-child’, esempio se dobbiamo creare un tema child per il famoso tema Enfold andremo a generare una cartella “enfold-child”.

successivamente andremo nella cartella appena generata e creeremo un file style.css  che conterrà il seguente codice:

/*
 Theme Name: Enfold Child
 Theme URI: #nogo
 Description: Enfold Child Theme
 Author: Il tuo nome e cognome
 Author URI: https://example.com/
 Template: enfold
 Version: 1.0.0
 Tags: tag che possono essere applicati al tuo tema separati da virgola
 Text Domain: enfold-child
*/

successivamente creeremo un file denominato function.php e al suo interno andremo a scrivere il seguente codice:

<?php
 add_action( ‘wp_enqueue_scripts’, ‘enfold_child’ );
 function enfold_child’ () {
    wp_enqueue_style( ‘enfold-child-style’, get_template_directory_uri() . ‘/style.css’ );

 }
?>

bene ora basterà andare nella sezione aspetto -> tema e attivare il nostro theme child appena creato.

Iniziamo dalla soluzione 😎

function aeroporti_custom_post() {
  // creo e registro il custom post type
  register_post_type( 'aeroporto', /* nome del custom post type */
    // definisco le varie etichette da mostrare nei menù
    array('labels' => 
        array(
          'name' => 'aeroporti', /* nome, al plurale, dell'etichetta del post type. */
          'singular_name' => 'aeroporto', /* nome, al singolare, dell'etichetta del post type. */
          'all_items' => 'Tutti gli aeroporti', /* testo nei menu che indica tutti i contenuti del post type */
          'add_new' => 'Aggiungi nuovo', /*testo del pulsante Aggiungi. */
          'add_new_item' => 'Aggiungi nuovo aeroporto', /* testo per il pulsante Aggiungi nuovo post type */
          'edit_item' => 'Modifica aeroporto', /*  testo modifica */
          'new_item' => 'Nuovo aeroporto', /* testo nuovo oggetto */
          'view_item' => 'Visualizza aeroporto', /* testo per visualizzare */
          'search_items' => 'Cerca aeroporto', /* testo per la ricerca*/
          'not_found' =>  'Nessun aeroporto trovato', /* testo se non trova nulla */
          'not_found_in_trash' => 'Nessun aeroporto trovato nel cestino', /* testo se non trova nulla nel cestino */
          'parent_item_colon' => ''
        ), /* fine dell'array delle etichette del menu */
        'description' => 'Lista aeroporti', /* descrizione del post type */
        'public' => true, /* definisce se il post type sia visibile sia da front-end che da back-end */
        'publicly_queryable' => true, /* definisce se possono essere fatte query da front-end */
        'exclude_from_search' => false, /* esclude (false) il post type dai risultati di ricerca */
        'show_ui' => true, /* definisce se deve essere visualizzata l'interfaccia di default nel pannello di amministrazione */
        'query_var' => true,
        'menu_position' => 8, /* definisce l'ordine in cui comparire nel menù di amministrazione a sinistra */
        'menu_icon' => get_stylesheet_directory_uri() . '/img/mia-icona.png', /* imposta l'icona da usare nel menù per il posty type */
        'rewrite'   => array( 'slug' => 'aeroporti', 'with_front' => false ), /* specificare uno slug per leURL */
        'has_archive' => true, /* definisci se abilitare la generazione di un archivio (tipo archive-aeroporto.php) */
        'capability_type' => 'post', /* definisci se si comporterà come un post o come una pagina */
        'hierarchical' => false, /* definisci se potranno essere definiti elementi padri di altri */

        /* la riga successiva definisce quali elementi verranno visualizzati nella schermata di creazione del post */

        'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'sticky')
    ) /* fine delle opzioni */
  ); /* fine della registrazione */
}

// Inizializzo la funzione
add_action( 'init', 'aeroporti_custom_post');

Cosa sono i Custom Post Type (CPT) ?

i custom post type o meglio definiti CPT sono dei tipi di post, vengono storicizzati nella classica tabella wp_posts; di default WORDPRESS ne ha 2 le pagine e gli articoli, ma grazie alla funzione sopra elencata ne possiamo aggiungere a nostro piacimento a seconda del progetto da realizzare.

Dove va inserito il codice sopra riportato, che serve alla creazione di un Custom Post Type in WordPress ?

Il codice inserito nel file functions.php del nostro template, o io consiglio sempre di creare un plugin per WordPress e includere il nostro script al suo interno per separare la logica dal tema.

Come aggiungere le categorie ad un CPT (Custom Post Type) WordPress

Di default i custom post type non hanno il supporto per la categorizzazione, nel caso in cui volessimo aggiungerlo possiamo farlo in questo modo:

add_action( 'init', 'category_aeroporto' );
function category_aeroporto() {
  register_taxonomy_for_object_type( 'category', 'aeroporto' );
}

e ora per mostrarli ai nostri utenti ?

Bene, abbiamo creato la parte relativa al back end, una volta che abbiamo inserito i nostri aeroporti, possiamo passare al front end in modo da mostrare i post inseriti.

Adesso all’interno del nostro tema creiamo un file che chiamiamo aeroporto.php (il nome del file deve essere quello del custom post type) e ci incolliamo il codice sottostante.

Come mostrare i post di un custom post type di WordPress

<?php
  /*
  Template Name:  aeroporto
  */
?>

<?php get_header(); ?>    

<?php 
  // Loop aeroporti  
  $custom_query_args = array(
    'post_type' => 'aeroporto',
    'posts_per_page' => 1,
    'orderby' => 'menu_order',
    'order' => 'ASC',
  );
  $custom_query = new WP_Query( $custom_query_args );
?>
<?php if ( $custom_query->have_posts() ) : while ( $custom_query->have_posts() ) : $custom_query->the_post(); ?>
  <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>> 
    <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
    <?php the_post_thumbnail(); ?>
    <?php the_excerpt();?>
  </article>
<?php endwhile; endif; wp_reset_postdata(); ?>

<?php get_sidebar(); ?>               

<?php get_footer(); ?>

 

Se pensate di non riuscire a realizzare queste modifiche o avete bisogno di fare altre personalizzazioni potete contattarmi per una consulenza, se la mole di lavoro è tanta possiamo concordare insieme una formula per un Contratto di assistenza e manutenzione sito web, per il periodo necessario a soddisfare tutte le vostre richieste.