ACF campi personalizzati all’interno di un articolo


in Wordpress by

ACF tutorial

Obbiettivo del tutorial:

In questo tutorial prendiamo come esempio la recensione di un libro. Vogliamo aggiungere all’interno del normale articolo di WordPress 6 nuovi campi personalizzati:

  • Immagine di copertina
  • Data di uscita del libro
  • Autore
  • Breve descrizione
  • Pulsante acquista copertina flessibile
  • Pulsante acquista kindle

Il risultato finale potete vederlo nella recensione di Padre ricco Padre povero, dove ho utilizzato gli stessi campi descritti sopra.

Se ancora non avete un’idea di cosa sia Advanced Custom Fields (ACF) leggetevi l’articolo WordPress campi personalizzati con Advanced Custom Fields (ACF).

Installiamo ACF

Possiamo installare il plugin dalla normale procedura di WordPress, cercando Advanced Custom Fields oppure scaricandolo dalla pagina ufficiale di WordPress

Aggiungiamo un campo personalizzato

Una volta installato il plugin possiamo iniziare a creare i nostri campi personalizzati dalla voce Campi Personalizzati (Custom Fields se avete WordPress in inglese) della nostra amministrazione.

Procediamo con Aggiungi nuovo, ci troveremo la seguente schermata

blank

Per prima cosa diamo un nome ai nostri campi personalizzati, nel nostro caso il titolo sarà Dettagli libro.

Il secondo passaggio è cliccare su Aggiungi Campo.

Aggiunta del campo immagine

Il nostro primo step sarà quello di aggiungere l’immagine di copertina del libro (chiamata Cover), prima di procedere però facciamo un breve riassunto delle opzioni che ACF ci mette a disposizione.

Di seguito alcuni fra i parametri più importanti:

  • Etichetta Campo: il nome del nostro custom field (in questo caso Cover)
  • Nome Campo: in genere viene compilato in automatico sulla base del titolo, gli spazi saranno sostituiti da underscore ( _ ). Questo nome ci servirà poi per mostrare il nostro contenuto lato frontend.
  • Tipo di Campo: esistono numerosi tipi di campo che andremo ad analizzare in seguito, in questo tutorial ci concentremo su: immagine, testo, data, link.
  • Istruzioni: testo libero (opzionale) apparirà vicino alla label nell’area amministrativa
  • Richiesto: obbigatorio o no
  • Formato di ritorno: se abbiamo selezionato immagine o data i formati di ritorno possono essere array, url o id.
  • Dimensione Anteprima: la thumb di anterpima dell’immagine inserita
  • Tipologie File permesse: possiamo inserire i formati accettati come per esempio jpg o png.
  • Condizione Logica: questa scelta se impostata su si potrà esservi utile in gruppi di campi più complessi, serve comunque a mostrare o nascondere un campo a seconda del valore impostato su altri input.

Tornando alla nostra immagine, diamo il nome al campo (Cover) e selezioniamo Array Immagine. Potete lasciare il resto delle opzioni come da default.

blank

Aggiunta del selettore data

Dopo aver aggiunto la cover del libro passiamo all’inserimento della data, selezionando il tipo Selettore Data.

Fare attenzione ad alcuni parametri:

  • Formato di visualizzazione: come viene visualizzata la data lato amministrazione.
  • Formato di ritorno: come viene stampato il formato data lato frontend
ACF selezione data

Date il nome che preferite (nel mio caso publication) e passiamo allo step successivo.

Aggiunta nome autore e descrizione

Il campo testo è il formato più semplice, fra le scelte del tipo da utilizzare.

Vi sono alcune opzioni da poter utilizzare come l’aggiunta di un testo di default, o limitare il numero di caratteri.

Il nostro campo di testo avrà il nome di author, e sarà appunto il nome dell’autore del libro.

Replichiamo un nuovo inserimento per la breve descrizione, scegliamo il tipo Textarea e diamo il nome description.

Aggiungiamo il bottone acquista

Ci mancano adesso i pulsanti che rimanderanno all’acquisto del libro.
Per farlo selezioniamo il campo Link e nominiamolo Button 1.

Nel valore di ritorno selezioniamo Link array, in questo modo il nostro valore sarà composto da un array composto da url, title e target.

Link array acf

Replichiamo l’inserimento del link con uno nuovo chiamato Button 2.

Salviamo e scegliamo dove mostrare i nostri campi

Prima di salvare dobbiamo settare dove visualizzare i dettagli del libro che abbiamo impostato.

Nel nostro caso vogliamo mostrare i campi nei normali post di WordPress, quindi lasciamo selezionato Tipo di post – è uguale a – Articolo.

blank

Con Advanced Custom Fields puoi scegliere dove visualizzare i custom fields creati, puoi selezionare pagina, template di pagina, post-type, é possibile altresi scegliere se visualizzare o meno i vostri input sono in alcune categorie (es libri).

blank

Mostriamo i valori di ACF nel nostro tema

Quello che dobbiamo andare a modificare adesso è il nostro single.php

Primo step, salviamo il valore all’interno di una variabile. Per salvare un campo all’interno di una variablile dobbiamo recuperare il valore con $myVariable = get_field(‘name’);

Se invece vogliamo stamparlo direttamente usiamo the_field(‘name’);

Noi salveremo il valore all’interno di una variablile, ricordo che dobbiamo recuperare i seguenti custom fields:

  • Immagine di copertina (cover)
  • Data di uscita del libro (publication)
  • Autore (author)
  • Descrizione (description)
  • Pulsante acquista (button_1)
  • Pulsante acquista (button_2)
<?php
//vars
$image = get_field('image');
$publication = get_field('publication');
$link1 = get_field('button_1');
$link2 = get_field('button_2');
?>

Mostriamo il campo immagine

Adesso non ci resta che mostrare le nostre variabili, vediamo come estrapolare tutti i valori dell’immagine.

<?php if (!empty($image)) : ?>
<img src="<?php echo esc_url($image['url']); ?>" alt="<?php echo esc_attr($image['alt']); ?>" />
<?php endif; ?>

Con if (!empty($image)) stiamo scegliendo di mostrare il blocco all’interno dell’if se la variabile $image non è vuota.

Mostriamo il campo data

Possiamo mostrare il campo data come una semplice stringa, oppure mostrare la data in un formato diverso. Io non sapendo il mese di pubblicazione mostrerò solo l’anno.

<?php 
//formato standard
<p>Data: <?php the_field('publication'); ?></p>
<?php 
// Mostro la data in un diverso formato 
$date = new \DateTime($date_string);
?>
<p>Data: <?php echo $date->format('Y'); ?></p>

Mostriamo i nostri bottoni

Per mostrare i due bottoni (button_1, button_2) abbiamo creato due campi di tipo Link, abbiamo scelto l’ozione array, quindi il nostro valore ritornerà :

  • Url
  • Title
  • Target
<?php 
//primo pulsante
if( $link1 ): 
    $link_url = $link1['url'];
    $link_title = $link1['title'];
    $link_target = $link1['target'] ? $link1['target'] : '_self';
    ?>
    <a class="btn btn-readmore" href="<?php echo esc_url( $link_url ); ?>" target="<?php echo esc_attr( $link_target ); ?>"><?php echo esc_html( $link_title ); ?></a>
<?php endif; ?>
<?php 
//secondo pulsante
if( $link2 ): 
    $link_url = $link2['url'];
    $link_title = $link2['title'];
    $link_target = $link2['target'] ? $link2['target'] : '_self';
    ?>
    <a class="btn btn-readmore" href="<?php echo esc_url( $link_url ); ?>" target="<?php echo esc_attr( $link_target ); ?>"><?php echo esc_html( $link_title ); ?></a>
<?php endif; ?>

Codice completo

Ovviamente vogliamo dare al risultato una struttura logica e piacevole. In questo tema è installato Bootstrap, per comodità mostrerò il risultato all’interno delle colonne del famoso framework.

<?php
//vars
$image = get_field('cover');
$author = get_field('author');
$description = get_field('description');
$publication = get_field('publication');
$link1 = get_field('button_1');
$link2 = get_field('button_2'); ?>

<div class="row">
    <?php if (!empty($image)) : ?>

        <div class="col-sm-4">
            <img src="<?php echo esc_url($image['url']); ?>" alt="<?php echo esc_attr($image['alt']); ?>" />
        </div>
    <?php endif; ?>

    <div class="col-sm-8">
        <?php
        $date_string = get_field('publication');
        $date = new \DateTime($date_string);
        ?>
         <?php if($author || $publication) : ?>
          <p><?php echo __('<strong>Autore</strong>: ', 'start') . $author . __('<br> <strong>Anno di pubblicazione</strong>: ', 'start') . $date->format('Y'); ?></p>
          <?php endif; ?>
        <?php if ($description) : ?>
            <p><?php echo $description;  ?></p>
        <?php endif; ?>
        <div>
            <?php
            //primo pulsante
            if ($link1) :
                $link_url = $link1['url'];
                $link_title = $link1['title'];
                $link_target = $link1['target'] ? $link1['target'] : '_self';?>
                <a class="btn btn-readmore" href="<?php echo esc_url($link_url); ?>" target="<?php echo esc_attr($link_target); ?>"><?php echo esc_html($link_title); ?></a>
            <?php endif; ?>
            <?php
            //secondo pulsante
            if ($link2) :
                $link_url = $link2['url'];
                $link_title = $link2['title'];
                $link_target = $link2['target'] ? $link2['target'] : '_self';?>
                <a class="btn btn-readmore" href="<?php echo esc_url($link_url); ?>" target="<?php echo esc_attr($link_target); ?>"><?php echo esc_html($link_title); ?></a>
            <?php endif; ?>
        </div>
    </div>
</div>

Popoliamo i nostri dati

Per compltare il lavoro dobbiamo andare nel post che vogliamo pubblicare e compiliamo tutti i campi desiderati. Quello che vedrete lato backend sarà qualcosa di simile.

ACF campi personalizzati

Vediamo il risultato

blank

Il risultato del nostro lavoro potete vederlo nella recensione di Padre ricco Padre povero, dove l’immagine a sinistra è affiancata dalla data di pubblicazione, il nome dell’autore, la breve descrizione e i link che rimandano all’acquisto del libro.


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *