28/10/2009


174 visite
Nessun Commento
rispondi
trackback
stampa

Tags

gradimento:

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Popolarità:

Popularity: 6% [?]

Usare i “Custom Fields” di Wordpress – Usi Avanzati – Parte 3

Scritto da Sergio in Wordpress.

Eccoci alla terza parte di questo tutorial dedicato all’utilizzo dei Custom Fields di Wordpress. In questo post tratteremo di alcuni usi avanzati dei campi custom.

Definire una data di scadenza di un post.

In alcuni casi potreste voler creare un post da mostrare solo per un certo numero di giorni, magari perché volete mostrare un avviso, o a causa di un concorso. Automatizzare questa cosa potrebbe sembrare complesso, in realtà è possibile realizzarlo utilizzando i Custom Field.

Per prima cosa, modifichiamo il nostro tema, sostituendo nelle opportune pagine il loop standard di Wordpress con questo codice:

<?php
  if (have_posts()) :
      while (have_posts()) : the_post(); ?>
            $expirationtime = get_post_custom_values('expiration');
                if (is_array($expirationtime)) {
                    $expirestring = implode($expirationtime);
                    }

            $secondsbetween = strtotime($expirestring)-time();
                if ( $secondsbetween > 0 ) {
           // Questo è solo un esempio...
      the_title();
      the_excerpt();
     }
    endwhile;
endif;
?>

Questo codice semplicemente sostituisce il loop standard, verificando se vi sia per il post un Custom Field chiamato expiration. Se presente, tale valore è confrontato con la data e l’ora corrente. Il vantaggio di questa soluzione è che il post non viene cancellato o modificato, semplicemente non viene mostrato nella pagina. Potrebbe ad esempio essere utile da inserire su una Home-page per dei post di servizio etc.

Per creare il Custom Field è sufficiente creare un campo usando come name expiration e come valore la data e l’ora che volete utilizzare come data limite. Il formato della data deve essere questo: mm/dd/yyyy 00:00:00

Modificare la modalità con cui sono mostrati i Post in HomePage

Molto spesso, uno dei problemi nella realizzazione di un tema Wordpress è che non esiste una funzionalità specifica per modificare il modo in cui differenti articoli sono mostrati sulla HomePage. In genere ci si limita a mostrare il primo post del loop per intero, e magari dei vari abstract per gli altri articoli. Certo, si può gestire una formattazione basata sulle categorie, ma è possibile intervenire in maniera più dinamica e ad hoc basandoci sui Custom Fields.

Ecco l’esempio di codice da inserire nel loop della homepage (file home.php) del vostro tema.

<?php if (have_posts()) :
      while (have_posts()) : the_post();
           $customField = get_post_custom_values("full");
           if (isset($customField[0])) {
           //Se un valore è assegnato al Custom Field "full"
               the_title();
               the_content();
              } else {
           // Se non è assegnato alcun valore
               the_title();
               the_excerpt();
     endwhile;
   endif;
?>

In questo esempio, il loop mostra come default l’excerpt dei post del blog, a meno che non sia valorizzato (con qualsiasi valore) il Custom Field denominato full. Ovviamente è possibile ulteriormente personalizzare questo codice per adattarlo a vostre ulteriori esigenze.

Aggiungere una MetaDescription alla pagina web

Una delle questioni più controverse relative a Wordpress è l’aspetto che il sistema non prevede una Meta Description specifica per la pagina. Vero è che attualmente i motori di ricerca si basano sempre meno sui tag META, ma comunque se fatti bene non nuociono.

In questo caso ecco la proposta di codice, stavolta da inserire nella porzione prima del tag </head> del vostro file header.php:

<meta name="description" content="
<?php if ( (is_home()) || (is_front_page()) ) {
   echo ('Qui va inserita la vostra descrizione principale');
} elseif(is_category()) {
   echo category_description();
} elseif(is_tag()) {
   echo '-archivio tag di questo blog' . single_tag_title();
} elseif(is_month()) {
   echo 'archivio di questo blog' . the_time('F, Y');
} else {
   echo get_post_meta($post->ID, "Metadescription", true);
}?>">

In questo caso il codice fa uso dei tag condizionali di Wordpress, e mostra un contenuto differente a seconda della pagina in cui ci si trova. Nel caso della HomePage mostrerà la descrizione scritta nel codice. Nel caso di una pagina di category, verrà mostrata la descrizione della categoria. Nel caso di un tag, verrà inseritoil Tag più la frase che aggiungerete. Idem per le pagine archivio.

Nel caso di un singolo post, invece, la descrizione verrà ottenuta da un Custom Field denominato “Metadescription“. In modo molto simile è possibile modificare la modalità con cui viene reso il Titolo della pagina sempre nella sezione head. Anche questo può aiutare nella ottimizzazione rispetto ai motori di ricerca.

Molto spesso, se recensiamo un sito, potrebbe essere utile che il link collegato al titolo punti direttamente alla pagina esterna, invece che alla pagina interna del nostro post, in una modalità simile ai post del tipo “link” di Tumblr.

Anche per questa funzionalità è sufficiente l’utilizzo dei Custom Fields. Per prima cosa, in questo caso dovremo creare una funzione specifica. per fare questo aprite il file “functions.php” del vostro tema ed aggiungete il seguente codice.

function print_post_title() {
 global $post;
 $thePostID = $post->ID;
 $post_id = get_post($thePostID);
 $title = $post_id->post_title;
 $perm  = get_permalink($post_id);
 $post_keys = array(); $post_val  = array();
 $post_keys = get_post_custom_keys($thePostID);

 if (!empty($post_keys)) {
     foreach ($post_keys as $pkey) {
          if ($pkey=='url1' || $pkey=='title_url' || $pkey=='url_title') {
          $post_val = get_post_custom_values($pkey);
      }
 }
 if (empty($post_val)) {
     $link = $perm;
     } else {
     $link = $post_val[0];
     }
     } else {
     $link = $perm;
  }
 echo '<h2><a href="'.$link.'" rel="bookmark" title="'.$title.'">'.$title.'</a></h2>';
}

Ora dovremo entrare nella nostra pagina (ad esempio nel file index.php) e sostituire il codice del titolo normale (probabilmente simile a questo):

<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a></h2>

con la funzione che abbiamo appena creato:

<?php print_post_title() ?>

In questo modo ogni volta che ad un post verrà assegnato un Custom Field con valore title_url, url_title o url1, il sistema collegherà il titolo del post al link esterno. Altrimenti creerà il titolo con link al post interno.

Conclusioni

Insomma, i Custom Field diventano davvero uno strumento utilissimo laddove necessitiamo di informazioni collegate ai post che vogliamo poi riutilizzare all’interno del nostro blog. E’ possibile realizzare quasi un database. Che so, possiamo collegare dei brevi aforismi ad un post, una data, delle immagini etc.

Per facilitare il vostro lavoro esistono anche alcune plugin interessanti. Custom Shortcodes vi permette di inserire dei Custom Field direttamente nel testo del post attraverso dei shortcodes. More Fields invece vi permette di creare dei piccoli panel contenenti Custom Fields che potete utilizzare nelle vostre pagine di amministrazione, molto utili ad esempio nel caso di usi simili a quelli relativi alle schede dei libri già illustrate. Inoltre è possibile creare dei pannelli customizzati che ci facilitino il compito.

Qualche indicazione la ho data. A voi la fantasia ora!

Related Posts with Thumbnails

Popularity: 6% [?]

Articoli e Traduzioni collegati:

I commenti sono chiusi.