Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 25 di 33
  • livello avanzato
Indice lezioni

Post formats: struttura del template

Impostiamo una struttura di template introducendo il concetto di post format, funzionalità che permettono di associare ad un articolo una meta-informazione con cui distinguere graficamente i post appartenenti a formati diversi.
Impostiamo una struttura di template introducendo il concetto di post format, funzionalità che permettono di associare ad un articolo una meta-informazione con cui distinguere graficamente i post appartenenti a formati diversi.
Link copiato negli appunti

Abbiamo visto come sia possibile differenziare la struttura delle pagine in base alla gerarchia dei template. WordPress permette di utilizzare template specifici a seconda del tipo di post, della categoria, della data di pubblicazione o dell'autore. Grazie ai formati dei post è possibile ottenere un controllo maggiore sull'output generato.

I post format costituiscono una funzionalità introdotta da WordPress 3.1 che permette di associare ad un articolo una meta-informazione, che può essere utilizzata per distinguere graficamente i post appartenenti a formati diversi.

Post formats

Sono ben nove i formati supportati da WordPress: aside, gallery, link, image, quote, status, video, audio, chat. Non esiste una regola che stabilisca come debbano essere stilizzati i post in base al formato, una citazione (quote), ad esempio, potrebbe prevedere un blockquote che racchiuda il contenuto del post; uno status potrebbe essere visualizzato senza il titolo; più strutturata, invece, dovrebbe essere una galleria di immagini.

Per attivare i formati dei post è necessario garantirne il supporto aggiungendo le seguenti istruzioni nel file functions.php del tema:

function seventyone_setup() {
	add_theme_support( 'post-formats', array( 'aside', 'audio', 'gallery', 'image', 'quote', 'link', 'video' ) );
}
add_action( 'after_setup_theme', 'seventyone_setup' );

Non è necessario aggiungere il supporto per ogni formato disponibile. La scelta dipende esclusivamente dalle esigenze di sviluppo. Nel codice proposto, la funzione di callback seventyone_setup è stata agganciata all'azione after_setup_theme in quanto il supporto dei formati deve essere impostato prima che venga eseguito l'hook init.

La struttura del template

Per operare sui formati, WordPress fornisce le funzioni get_post_format e has_post_format. La prima restituisce il formato del post corrente, la seconda è un conditional tag che permette di testare la corrispondenza del post corrente ad uno specifico formato. Le due funzioni sono utili per eseguire blocchi di codice distinti a seconda del formato rilevato.

Un altro template tag a cui fare ricorso è get_template_part, che inserisce un template parziale all'interno del documento corrente. La funzione è strutturata come segue:

get_template_part( $slug, $name );

Il primo argomento costituisce la parte iniziale generica di un nome di file, il secondo argomento la parte finale. Il nome del file deve essere composto come segue:

{$slug}-{$name}.php

Volendo utilizzare la funzione per caricare un template (parziale) diverso per ogni formato di file bisogna stabilire una struttura predeterminata da dare ai nomi dei template. Per il tema Seventyone sono stati previsti i seguenti template:

  • content-aside.php
  • content-audio.php
  • content-gallery.php
  • content-image.php
  • content-link.php
  • content-none.php
  • content-page.php
  • content-quote.php
  • content-video.php
  • content.php

Il prefisso content individua lo slug, il suffisso individua il formato o un particolare tipo di template (ad esempio page o none). Quello che segue è il template generico content.php:

<?php
/**
 * @package WordPress
 * @subpackage Seventy-One-WordPress-Theme
 * @since Seventy One 1.0
 */
 ?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
	<header class="entry-header">
		<?php
		if ( is_single() ) :
			the_title( '<h1 class="entry-title">', '</h1>' );
		else :
			the_title( '<h1 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h1>' );
		endif;
		?>
		<?php posted_on(); ?>
		<?php edit_post_link( __( 'Edit', 'seventyone' ), '<span class="edit-link">', '</span>' ); ?>
	</header>
	<?php if ( is_search() || is_home() ) : ?>
	<div class="entry-summary">
		<?php
		if ( has_post_thumbnail() ){
		?>
		<div class="post-thumbnail"><?php the_post_thumbnail( 'thumbnail' ); ?></div>
		<?php
	}
	?>
		<?php the_excerpt(); ?>
	</div><!-- .entry-summary -->
	<?php else : ?>
	<div class="entry-content">
		<?php the_content(); ?>
	</div>
	<footer class="entry-meta">
	<?php the_tags(__('Tags: ','seventyone'), ', ', '<br />'); ?>
	<?php _e('Posted in','seventyone'); ?> <?php the_category(', ') ?> |
		<?php
		if ( comments_open() ) :
		  comments_popup_link(__('No Comments &#187;','seventyone'), __('1 Comment &#187;','seventyone'), __('% Comments &#187;','seventyone'));
		endif;
		?>
	</footer>
	<?php endif; ?>
	<?php
	if( is_single() )
		get_template_part( 'template_parts/template', 'author' );
	?>
</article>

Apportando le modifiche opportune a questa struttura, si potranno generare tutti i template parziali necessari alle più specifiche esigenze di sviluppo.

Ti consigliamo anche