Aggiungere nuove features al proprio tema wordpress

April 07, 2013

Creare un tema wordpress è reso sempre più facile dalle molte guide che si trovano su internet, voglio condividere alcuni dei così detti code snippet che ho trovato e che consentono di aumentare il numero di features del proprio tema.

Aggiungere automaticamente Open Graph ai tuoi post

Open Graph è un protocollo creato da facebook che rende il contenuto della pagina più facilmente riconoscibile dal social network.

Bisogna inserire il seguente codice all'interno del file functions.php del proprio tema.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function wptuts_opengraph_for_posts() {
    if ( is_singular() ) {
        global $post;
        setup_postdata( $post );
        $output = '<meta property="og:type" content="article" />' . "n";
        $output .= '<meta property="og:title" content="' . esc_attr( get_the_title() ) . '" />' . "n";
        $output .= '<meta property="og:url" content="' . get_permalink() . '" />' . "n";
        $output .= '<meta property="og:description" content="' . esc_attr( get_the_excerpt() ) . '" />' . "n";
        if ( has_post_thumbnail() ) {
            $imgsrc = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'medium' );
            $output .= '<meta property="og:image" content="' . $imgsrc[0] . '" />' . "n";
        }
        echo $output;
    }
}
add_action( 'wp_head', 'wptuts_opengraph_for_posts' );

Ora all'interno dell'header dell'header.php del proprio tema si modifica quella che dovrebbe essere la prima riga di codice, il tag HTML con

1
<html <?php language_attributes(); ?> prefix="og: http://ogp.me/ns#">
nel caso di html5 si può anche scrivere
1
<!DOCTYPE html prefix="og: http://ogp.me/ns#">

Sostituisci automaticamente le parole all'interno dei tuoi post

Nel caso dovessi sostituire alcune parole all'interno di tutti i tuoi post basta copiare il seguente codice all'interno del file functions.php.

1
2
3
4
5
6
7
8
9
10
11
function replace_text_wps($text){
    $replace = array(
        // 'WORD TO REPLACE' => 'REPLACE WORD WITH THIS'
        'wordpress' => '<a href="#">wordpress</a>',
        'excerpt' => '<a href="#">excerpt</a>',
        'function' => '<a href="#">function</a>'
    );
    $text = str_replace(array_keys($replace), $replace, $text);
    return $text;
add_filter('the_content', 'replace_text_wps');
add_filter('the_excerpt', 'replace_text_wps');

Rimuovere gli elementi dalla barra amministratore di wordpress

Se si vuole evitare che un amministratore acceda ad alcuni menù come quello dei plugin o quello delle impostazioni basta incollare il seguente codice all'interno del file functions.php.

1
2
3
4
5
6
7
8
9
10
11
function wps_admin_bar() {
    global $wp_admin_bar;
    $wp_admin_bar->remove_menu('wp-logo');
    $wp_admin_bar->remove_menu('about');
    $wp_admin_bar->remove_menu('wporg');
    $wp_admin_bar->remove_menu('documentation');
    $wp_admin_bar->remove_menu('support-forums');
    $wp_admin_bar->remove_menu('feedback');
    $wp_admin_bar->remove_menu('view-site');
}
add_action( 'wp_before_admin_bar_render', 'wps_admin_bar' );

Cambiare la scritta del footer della parte amministrativa

Cambiare la scritta del footer nella parte amministrativa è a volte utile in quanto è brutto vendere un prodotto con la scritta “Grazie per aver creato questo sito usando WordPress”, è anche facile da fare, come al solito si inserisce del codice all'interno del file functions.php;

1
2
3
4
function remove_footer_admin () {
    echo "Testo da aggiungere";
}
add_filter('admin_footer_text', 'remove_footer_admin');

Cambiare il mittente delle mail di Wordpress

Se vuoi cambiare il mittente delle mail che Wordpress invia a te o agli utenti registrati devi (come sempre) inserire le seguenti righe di codice all'interno del fiile functions.php file.

1
2
3
4
5
6
7
8
9
add_filter('wp_mail_from', 'new_mail_from');
add_filter('wp_mail_from_name', 'new_mail_from_name');

function new_mail_from($old) {
 return 'admin@yourdomain.com';
}
function new_mail_from_name($old) {
 return 'Your Blog Name';
}

Creare un pulsante “pin it” di Pinterest per il tuo sito wordpress

Logo Pinterest Pinterest, uno dei nuovi social network che sta riscuotendo un grandissimo successo

Pinterest è un sito dove le persone condividono le immagini appartenenti a siti internet. Così come per Facebook o Twitter, puoi aggiungere un bottone di Pinterest all'interno del tuo sito per rendere più facile la condivisione dei tuoi articoli. Basta copiare il seguente codice all'interno del proprio sito (non all'interno del file functions.php ma all'interno di header, index, footer, single o page).

1
<a href="http://pinterest.com/pin/create/button/?url=<?php the_permalink(); ?>&amp;media=<?php $thumb = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'thumbnail' ); echo $thumb['0']; ?>&amp;description=<?php the_title(); ?>" class="pin-it-button" count-layout="horizontal">Pin It</a>

Una volta fatto basta caricare la libreria javascript di pinterest inserendo nel footer il seguente codice:

1
<script type="text/javascript" src="http://assets.pinterest.com/js/pinit.js"></script>

Aggiungi un bottone per condividere gli articoli su Google+

Google Plus Google+ il social network di Google

Google+ è un social network che sta vedendo un discreto successo, anche se come numero di utenti è inferiore a Facebook ha una vocazione “leggermente” più professionale. Per aggiungere un pulsante di google+ nei post di wordpress incolla il codice seguente all'interno del file functions.php:

1
2
3
4
5
6
7
8
9
10
add_filter('the_content', 'wpr_google_plusone');
function wpr_google_plusone($content) {
	$content = $content.'
<div class="plusone"><g:plusone size="tall" href="'.get_permalink().'"></g:plusone></div>';
	return $content;
}
add_action ('wp_enqueue_scripts','wpr_google_plusone_script');
function wpr_google_plusone_script() {
	wp_enqueue_script('google-plusone', 'https://apis.google.com/js/plusone.js', array(), null);
}

Mostra il tuo ultimo update di Google+

Se usi in prima persona Google+ potresti voler mostrare qual'è il tuo ultimo post o elemento condiviso. Per farlo copia nel tuo sito il seguente codice:
1
2
3
4
5
6
7
8
<?php
	include_once(ABSPATH.WPINC.'/rss.php');
	$googleplus = fetch_feed("http://plusfeed.appspot.com/103329092193061943712"); // Sostituisci il numero 103329092193061943712 con il tuo id di Google+
	echo '<a href="';
	echo $googleplus->items[0]['link']; echo '">';
	echo $googleplus->items[0]['summary'];
	echo '';
?>

Aggiungere i pulsanti per la condivisione su twitter e Facebook all'interno di ogni post

The Facebook Twitter Logo

Facebook and Twitter sono i due social network più utilizzati e non ricordo di siti che non consentano di condividere i propri contenuti su di essi. Come al solito copia il seguente codice all'interno del file functions.php. Mostrerà i bottoni di condivisione di Facebook e Twitter alla fine di ogni articolo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function share_this($content){
    if(!is_feed() &amp;&amp; !is_home()) {
        $content .= '
<div class="share-this">
                    <a href="http://twitter.com/share"
class="twitter-share-button"
data-count="horizontal">Tweet</a>
                    <script type="text/javascript"
src="http://platform.twitter.com/widgets.js"></script></p>
<div class="facebook-share-button">
                        <iframe
src="http://www.facebook.com/plugins/like.php?href='.
urlencode(get_permalink($post->ID))
.'&amp;amp;layout=button_count&amp;amp;show_faces=false&amp;amp;width=200&amp;amp;action=like&amp;amp;colorscheme=light&amp;amp;height=21"
scrolling="no" frameborder="0" style="border:none;
overflow:hidden; width:200px; height:21px;"
allowTransparency="true"></iframe>
                    </div>
                </div>';
    }
    return $content;
}
add_action('the_content', 'share_this');

Mostra quante volte un post è stato condiviso via Twitter

Inserisci all'interno del file functions.php:

1
2
3
4
5
6
function readTwitterShares($url) {
 $s = file_get_contents("http://urls.api.twitter.com/1/urls/count.json".
   "?callback=?&amp;url=".urlencode($url));
   preg_match("#("count"):([0-9]*)#",$s,$ar);
   return isset($ar[2]) ? $ar[2] : 0;
}

Poi all'interno del post inserisci il codice php

1
echo readTwitterShares(get_permalink());

Disabilita automaticamente i commenti più vecchi di X giorni

Se hai articoli molto vecchi sul tuo sito è possibile che parte del codice che hai inserito all'interno sia deprecato, o che in generale la notizia che riporti sia imprecisa, in questo caso conviene disabilitare i post vecchi, per farlo basta inserire come al solito il seguente codice all'interno del file functions.php . Il codice disabiliterà i commenti per gli articoli più vecchi di 30 giorni, volendo è possibile aumentare o diminuire il numero al terzo rigo.

1
2
3
4
5
6
7
8
9
function close_comments( $posts ) {
	if ( !is_single() ) { return $posts; }
	if ( time() - strtotime( $posts[0]->post_date_gmt ) > ( 30 * 24 * 60 * 60 ) ) {
		$posts[0]->comment_status = 'closed';
		$posts[0]->ping_status    = 'closed';
	}
	return $posts;
}
add_filter( 'the_posts', 'close_comments' );

Hai altre guide o code snippet che ritieni pertinenti a quanto scritto su questo articolo? Commenta qui sotto o mandami una mail.