Nell’ultimo periodo mi sono dovuto confrontare con la creazione di un template wordpress (ancora in lavorazione), ho affrontato varie difficoltà ed ho pensato di comunicarvi qualche mia piacevole scoperta e qualche problema che ho risolto.
1
2
3
<?php get_header() ?>
<?php get_sidebar() ?>
<?php get_footer() ?>
in questo modo possiamo usare le stesse componenti in ogni pagina che creiamo oppure per esempio eliminare la sidebar su alcune pagine.
Una cosa da fare se si usa la sidebar è accertarsi che nel file functions.php sia presente il seguente codice:
1
2
3
4
5
6
7
8
9
if ( function_exists('register_sidebar') ) {
register_sidebar(array(
'name'=>'sidebar',
'before_widget' => '',
'after_widget' => '</li>',
'before_title' => '',
'after_title' => '</h3>',
));
}
Una volta inserito questo codice sarà possibile inserire widget all’interno della sidebar.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!-- Start the Loop. -->
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<!-- The following tests if the current post is in category 3. -->
<!-- If it is, the div box is given the CSS class "post-cat-three". -->
<!-- Otherwise, the div box will be given the CSS class "post". -->
<?php if ( in_category('3') ) { ?>
<div class="post-cat-three">
<?php } else { ?>
<div class="post">
<?php } ?>
<!-- Display the Title as a link to the Post's permalink. -->
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<!-- Display the date (November 16th, 2009 format) and a link to other posts by this posts author. -->
<small><?php the_time('F jS, Y') ?> by <?php the_author_posts_link() ?></small>
<!-- Display the Post's Content in a div box. -->
v class="entry">
<strong><?php the_content(); ?></strong>
</div>
<!-- Display a comma separated list of the Post's Categories. -->
class="postmetadata">Posted in <?php the_category(', '); ?>
</div> <!-- closes the first div box -->
<!-- Stop The Loop (but note the "else:" - see next line). -->
<?php endwhile; else: ?>
<!-- The very first "if" tested to see if there were any Posts to -->
<!-- display. This "else" part tells what do if there weren't any. -->
Sorry, no posts matched your criteria.
<!-- REALLY stop The Loop. -->
<?php endif; ?>
Le righe di codice interessanti sono:
Questa riga permette appunto di ciclare per tutti i risultati di un interrogazione su tutti gli articoli del sito, questa interrogazione può essere modificata, decidendo ad esempio di stampare solo gli articoli di un determinato autore, con una determinata caratteristica o e anche possibile scegliere quanti articoli stampare per pagina usando query_posts( 'posts_per_page=7' ); prima del while.
Il comando
1
<?php the_content(); ?>
1
<strong><?php the_excerpt(__('Read more',False));?></strong>
Esistono molti plugin per rendere il proprio sito più SeoLike, in pochi sanno però che è possibile inserire delle ottimizzazioni all’interno del proprio template rendendo tutto più facile. Come fare? Basta inserire le seguenti righe di codice all’interno del file functions.php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
//Ottimizzazione SEO
function add_meta_tag(){
global $wp_query;
$post = $wp_query->get_queried_object();
$desc = get_bloginfo('description');
$KeywordsAssociated = "LE KEYWORDS DI DEFAULT";
$keys = $KeywordsAssociated ;
if(is_single() || is_page()){
$desc = cut($post->post_content, 25);
}
if(is_single()){
$keywords = array();
$tags = get_the_tags($post->ID);
$categories = get_the_category($post->ID);
if(is_array($tags)){
foreach ($tags as $tag)
$keywords[] = $tag->name;
}
if(is_array($categories)){
foreach ($categories as $category)
$keywords[] = $category->cat_name;
}
$keys = implode(", ", $keywords);
}
if(is_category()){
$desc = strip_tags(category_description());
}
$desc = str_replace(array("n","r","t"), " ", $desc);
$desc = str_replace('"', "'", $desc);
echo '<meta name="description" content="' . $desc . '" />' . "n";
echo '<meta name="keywords" content="'. $keys . '" />' . "n";
}
add_action('wp_head', 'add_meta_tag');
function cut($content, $cut = 0, $encode_html = 0) {
if ( $cut && !$encode_html )
$encode_html = 2;
if ( 1== $encode_html ) {
$content = wp_specialchars($content);
$cut = 0;
} elseif ( 0 == $encode_html ) {
$content = make_url_footnote($content);
} elseif ( 2 == $encode_html ) {
$content = strip_tags($content);
}
if ( $cut ) {
$blah = explode(' ', $content);
if ( count($blah) > $cut ) {
$k = $cut;
$use_dotdotdot = 1;
} else {
$k = count($blah);
$use_dotdotdot = 0;
}
for ( $i=0; $i<$k; $i++ )
$excerpt .= $blah[$i].' ';
$excerpt .= ($use_dotdotdot) ? '...' : '';
$content = $excerpt;
}
$content = str_replace(']]>', ']]&gt;', $content);
return $content;
}
?>
dove “LE KEYWORDS DI DEFAULT” sono le keywords che vogliamo impostare di Default per il sito, per ogni articolo invece verrà creato un meta tag per la descrizione della pagina contenente un buon numero di parole iniziali dell’articolo, come Keywords saranno usate le categorie e le keywords dello stesso.
Per rendere il titolo del sito più indicizzabile si deve sostituire il nodo “title all’interno dell’”head” con:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<title>
<?php
wp_title('');
if (function_exists('is_tag') and is_tag()) { ?>
Tag per <?php echo $tag;
}
if (is_archive()) { ?>
Archivio <?php
} elseif (is_search()) { ?>
Ricerca per <?php echo wp_specialchars($s,1);
}
if ( !(is_404()) && (is_search()) or (is_single()) or (is_page()) or (function_exists('is_tag') and is_tag()) or (is_archive()) ) { ?>
| <?php
} ?>
<?php bloginfo('name');
if(is_home()){ ?>
- <?php bloginfo('description');
}
?>
</title>
1
2
3
4
5
6
<?php
$page_id = "XXXXXXXXXXXX";
$xml = @simplexml_load_file("http://api.facebook.com/restserver.php?method=facebook.fql.query&query=SELECT%20fan_count%20FROM%20page%20WHERE%20page_id=".$page_id."") or die ("a lot");
$fans = $xml->page->fan_count;
echo $fans;
?>
E sostituire il valore XXXXXXXXXXXX con il pageId della pagina facebook associata.
Per i consigli sul SEO ringrazio Daniele Ghidoli di bigthink.it