Aggiungere pulsanti sociali laterali nella sharebar in WordPress senza plugin
Dopo aver visto la lista dei migliori plugin per inserire i pulsanti sociali in WordPress, e dopo aver capito che i plugin possono rallentare il proprio blog, ecco che ti propongo una soluzione alternativa: inserire i pulsanti sociali lateralmente in posizione fissa, con effetto fadein e fadeout, senza plugin, ma solamente smanettando un po’ con il codice 😯
Il risultato
Il risultato è un contenitore laterale fisso (ad esempio a sinistra) dove sono inseriti i pulsanti sociali belli grossi:
L’aspetto del contenitore è completamente personalizzabile tramite codice CSS, quindi se lo vuoi un po’ più a sinistra, a destra, rettangolare o altro, lo potrai fare tranquillamente senza nessun problema. È possibile inserire anche altri pulsanti sociali, ma per questo ci devi pensare te 🙂
Il codice
Per aggiungere la sharebar laterale fissa (il contenitore con i pulsanti) aggiungi questo codice nel file functions.php del tuo tema (salvane una copia prima di modificarlo).
[php]
/*************************
* MOSTRA LA SHAREBAR LATERALE
* Author: Roberto Iacono
* Site: https://www.robertoiacono.it/
****************************/
function ri_sharebar() {
$ri_sharebar = ”;
$ri_sharebar .= ‘
<div id="ri_share">
<div class="sbutton" id="ri_share_twitter">
<iframe allowtransparency="true" frameborder="0" scrolling="no" src="http://platform.twitter.com/widgets/tweet_button.html?url=’. get_permalink() .’&count=vertical&via=robertoiacono&text=’. preg_replace(‘/\%/’,”, get_the_title()) .’" style="width:65px; height:65px;"></iframe>
</div>
<div class="sbutton" id="ri_share_fb">
<iframe src="//www.facebook.com/plugins/like.php?href=’. get_permalink() .’&send=false&layout=box_count&width=65&show_faces=false&font&colorscheme=light&action=like&height=65&appId=161799020519349" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:65px; height:65px;" allowTransparency="true"></iframe>
</div>
<div class="sbutton" id="ri_share_gplusone">
<script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
<g:plusone size="tall"></g:plusone>
</div>
</div>’;
echo $ri_sharebar;
}
[/php]
Aggiungi questo codice prima di </body>nel file footer.php:
[php]
<script type="text/javascript">
var $ri_sharebar = jQuery.noConflict();
$ri_sharebar(window).scroll(function() {
if (($ri_sharebar(this).scrollTop() > 300) && ($ri_sharebar(this).scrollTop() < document.getElementById("content").offsetHeight – 800)) {
$ri_sharebar("#ri_share").fadeIn("medium");
} else {
$ri_sharebar("#ri_share").fadeOut("medium");
}
});
</script>
[/php]
Poi aggiungi questo codice nel file single.php prima dell’ultimo </div>, se vuoi mostrare la barra negli articoli:
[php]
<?php if (function_exists(‘ri_sharebar’)) ri_sharebar(); ?>
[/php]
Diamo un po’ di stile alla barra con il codice CSS, da incollare alla fine del file style.css:
[css]
#ri_share {position:fixed; top:40%; display: none;margin-left:-107px; border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;background-color:#fff;padding:5px 5px 2px 5px;z-index:10;}
#ri_share .sbutton {text-align:center; margin:5px 5px 0 5px;}
#ri_share .ri_share_fb {margin-left:6px;}
#___plusone_3{ width:72px !important; }
[/css]
Un suggerimento? Fai un piccolo controllo di come si vede la barra su tutti i browser più importanti, come FireFox, Chrome, IE…
Spiegazione del Codice
Partendo dal presupposto che non sono un programmatore, quindi il codice potrà essere sicuramente migliorabile, ecco cosa potrebbe esserti utile sapere:
ri_sharebar()
La funzione ri_sharebar() mostra a video il contenitore con i relativi pulsanti. Di default, ho inserito solamente Facebook, Twitter e Google+, ma puoi aggiungerne quanti ne vuoi, adattando il codice del nuovo pulsante a quello che ho inserito io.
Un consiglio? Se aggiungi i pulsanti con codice iframe, avrai meno funzionalità, ma saranno molto più veloci da caricare.
Se non visualizzi il pulsante di Google+, probabilmente è perchè devi ancora aggiungere un altro codice, più precisamente questo:
[php]
<script type="text/javascript">
(function() {
var po = document.createElement(‘script’); po.type = ‘text/javascript’; po.async = true;
po.src = ‘https://apis.google.com/js/plusone.js’;
var s = document.getElementsByTagName(‘script’)[0]; s.parentNode.insertBefore(po, s);
})();
</script>
[/php]
da aggiungere prima di </body> nel footer.php.
add_ri_sharebar_scripts()
La funzione add_ri_sharebar_scripts() aggiunge lo script per l’effetto fadein e fadeout direttamente nel footer. Per poter funzionare, ha bisogno che nel file footer.php sia presente il codice wp_footer(). Se non c’è, aggiungilo prima di </body> in questo modo:
[php]
<?php wp_footer(); ?>
[/php]
Il numero 300 che vedi alla riga 5 del secondo codice, indica che la sharebar verrà mostrata dopo 300px.
Il numero 800 che vedi sempre alla riga 5, indica che la sharebar verrà nascosta a 800px dalla fine dell’elemento “content”.
La stringa “content” indica che il codice per nascondere la sharebar, fa riferimento all’elemento html con id uguale a content. Cosa vuol dire? Che la sharebar verrà nascosta 800px prima della fine dell’elemento id=”content” (che dovrebbe essere presente in tutti i temi). Per trovare id e/o l’elemento, leggi questo articolo su come usare FireBug. Se non è presente questo elemento, usane un altro.
Puoi cambiare la velocità di fadein e fadeout modificando la stringa “medium” in “fast” (veloce) o “slow” (lento).
PS: la soluzione migliore sarebbe quella di inserire il codice javascript in un file .js esterno, e poi includerlo tramite la funzione wp_enqueue_script.
codice CSS
La prima riga è relativa allo stile del contenitore.
- top:40%; – indica che la barra viene mostrata a partire dal 40% della schermata del computer (è una misura relativa)
- margin-left:-107px; – puoi spostare la sharebar più a destra o più a sinistra modificando il valore del margine sinistro
- border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px; – per arrotondare gli angoli.
La seconda riga è relativa al pulsante di Twitter, la terza al pulsante di Facebook e la quarta a quello di Google+. Da notare che per Google+ potresti avere anche un id diverso da “___plusone_3”, quindi controlla sempre con firebug.
Cosa ne pensi?
Hai suggerimenti per migliorare il codice?
Fammi vedere se la sharebar che ho inserito sul mio blog con questo codice, funziona bene… clicca su quei pulsanti 😉
Aggiornamenti
Pasquale Scarpati mi ha fatto notare che il codice ha un problema con le categorie. Se si prova a condividere la pagina della categoria sui social, compare nome+url del primo articolo (e non della categoria). Quindi ha proposto questo codice con qualche modifica in più:
[php]
function ri_sharebar() { $ri_sharebar = ”; $ri_sharebar .= ‘ <div id="ri_share"> <div class="sbutton" id="ri_share_twitter"> <iframe allowtransparency="true" frameborder="0" scrolling="no" src="http://platform.twitter.com/widgets/tweet_button.html?url=’. "http://" . $_SERVER[‘HTTP_HOST’] . $_SERVER[‘REQUEST_URI’] .’&via=robertoiacono&count=vertical&text=’. wp_title( ‘|’, false ) . ‘" style="width:65px; height:65px;"></iframe> </div> <div class="sbutton" id="ri_share_fb"> <iframe src="//www.facebook.com/plugins/like.php?href=’. "http://" . $_SERVER[‘HTTP_HOST’] . $_SERVER[‘REQUEST_URI’] .’&send=false&layout=box_count&width=65&show_faces=false&font&colorscheme=light&action=like&height=65&appId=161799020519349" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:70px; height:65px;" allowTransparency="true"></iframe> </div> <div class="sbutton" id="ri_share_gplusone"> <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script> <g:plusone size="tall"></g:plusone> </div> </div>’; echo $ri_sharebar; }
[/php]
Grazie Pasquale per l’integrazione!
11/03/2013 alle 11:33
Grazie mille per questo tutorial Roberto!
Veramente molto utile si questo, che andrò ad applicare anche al mio sito, che il percorso di articoli che stai realizzando per avere un WordPress più veloce.
Grazie per condividere questa conoscenza.
11/03/2013 alle 18:47
Grazie a te Andrea! 🙂
12/03/2013 alle 09:21
Roberto ho inserito il codice sul mio sito ma funziona male.
La sharebar appare per un secondo e poi scompare..
Articolo d’esempio:
hwmaster.com/2013/03/11/michael-pachter-spara-a-zero-sulla-next-gen/
13/03/2013 alle 17:30
Mi pare che tu abbia corretto tutto, è così? Io lo vedo bene 🙂
Dov’era l’errore?
13/03/2013 alle 19:46
Sì, adesso ho corretto!
Però mi da’ problemi di visualizzazione con Firefox 🙁
21/03/2013 alle 17:09
niente..?
21/03/2013 alle 21:03
Io vedo tutto sistemato Mirko 🙂 Prova a descrivere il problema…
23/03/2013 alle 07:48
Ecco uno screen di come lo vedo io con Firefox..
grabilla.com/03317-e4ad0abf-4dfd-429e-9b7d-34811f611d52.png
25/03/2013 alle 13:45
Ok, grazie. È solo un problema di posizionamento del codice. Cambia la posizione. Prova ad esempio prima della funzione che richiama la sidebar…
13/03/2013 alle 13:38
Ciao Roberto, ho provato a mettere il codice ma mi manda in crash il sito con server error. Dreamweaver mi dice che c’è un errore di sintassi, quindi l’ho rimosso. Se riesci a fare un debug lo metto di sicuro. 😉
13/03/2013 alle 18:20
Ciao Stefano,
probabilmente è qualche errore nello script… mi puoi mandare l’errore che ti dà Dreamweaver? A me risulta tutto ok…
18/03/2013 alle 21:13
Ciao Roberto, complimenti e grazie per quello che scrivi 😀
Sto strutturando il mio sito, sarà prevalentemente un sito portfolio, ma voglio includere una zona blog 🙂
Stavo provando a inserire questa feature, ma quando carico il file functions.php nel child theme mi crasha il sito 🙁
il file functions.php del tema child contiene solo
inoltre l’editor di testo che uso (textwrangler) mi segnala tutto il contenuto tra $ri_sharebar .= ‘ e ‘; di un solo colore come se fosse errata la sintassi, però non me ne intendo di php..
Grazie mille se vorrai aiutarmi 🙂
19/03/2013 alle 17:18
Ti ringrazio Armando, ho modificato la funzione, puoi darmi un feedback?
20/03/2013 alle 01:36
Grazie a te per l’intervento, purtroppo non riesco a farla comparire, però com’è adesso il codice non mi crasha più il sito, semplicemente non sbuca fuori la barra.. jo provato a ripetere l’operazione più volte,
questo è un articolo di esempio: armanner.it/hello-world/ l’ho fatto lungo appositamente per i test, ma nada 🙂
21/03/2013 alle 19:58
Ciao Armando,
hai controllato di aver impostato correttamente l’ID a cui si deve aggenciare il codice javascript? Di default è “content”, ma nel tuo caso non c’è. Puoi usare “left-area” per il tuo.
Fammi sapere.
22/03/2013 alle 16:29
Grazie molte Roberto, appena ho tempo provo la modifica che mi suggerisci, per il momento mi sono affidato al plugin socialize per avere anche il call to action, ma tanto devo prima completare il sito eheheh poi tutte queste features le sistemo 🙂
PS: a causa di un problema di connessione ho fatto un doppio/triplo post… scusami 🙂
20/03/2013 alle 17:08
Ciao Roberto, grazie a te per l’aiuto, ho modificato i file ed ora non crasha piuù il sito, il problema è che comunque non esce la barra laterale.
Ho provato più volte a fare da capo e controllare che non stessi sbagliando qualcosa, ma niente.. Grazie comunque 🙂 al massimo userò Sharebar
02/04/2013 alle 12:05
Ciao Roberto e grazie per le tue preziose guide. 🙂
Ho seguito questa interessantissima guida per filo e per segno, inserendo il tutto nei vari file ma nel mio sito non visualizzo nulla. Dove sto sbagliando secondo te?…
02/04/2013 alle 17:11
Controlla nel sorgente della pagina se il codice viene caricato.
Poi controlla se nel codice javascript fai riferimento ad una sezione del blog che esiste (tipo “content”)
02/04/2013 alle 17:48
Ciao Roberto, non so ma non me lo visualizza. Controlla tu stesso se puoi. 🙂
Grazie mille
04/04/2013 alle 09:42
Se può essere d’aiuto anch’io ho avuto dei problemi nella visualizzazione (uso Firefox) ho risolto spostando il codice copiato in style.css prima di /* CONTENT AREA */. Ora mostra correttamente i pulsanti.
I pulsanti appaiono quando scorrendo la pagina si raggiunge circa il 15-20% per poi scomparire una volta raggiunto il 75-80%. L’effetto è carino, è voluto? Si può rendere permanente la visualizzazione?
04/04/2013 alle 15:36
Niente da fare, io il /* CONTENT AREA */ neanche lo ho nel mio stile. Uso un tema personalizzato, forse è quello che rompe le scatole 🙁
06/04/2013 alle 11:21
Basta che sostituisci il “content” del codice con un tuo id che è presente nella pagina…
06/04/2013 alle 11:50
Scusa l’ignoranza Roberto, ma quale sarebbe un mio id? :p
06/04/2013 alle 11:29
Sì, l’effetto è voluto, leggi bene l’articolo che ho spiegato come impostare questi parametri 🙂 Per renderla permanente, devi modificare il codice css ed eliminare “display: none;”
09/04/2013 alle 22:05
Grazie mille per il tuo articolo, davvero utile!
Quello che ti volevo chiedere era però come potrei integrare i plugin social nel mio blog in maniera simile a come hai fatto tu nell’header (con le icone di FB, Twitter, Google+ e RSS): hai usato un plugin?
Se non hai usato un plugin: come hai fatto a mostrare il numero di iscritti/fan per ogni piattaforma social
Complimenti per il sito: ha una grafica pulita ed estremamente curata ed offre contenuti sempre interessanti!!!
10/04/2013 alle 13:03
Ti ringrazzio Andrea,
ho aggiunto i pulsanti a mano, sono delle semplici immagini 🙂
Per il numero testuale, appena trovo un po’ di tempo scrivo come fare, ma al momento legge bene solamente Facebook, con gli altri ho dei problemi.
12/04/2013 alle 09:52
salve roberto, grazie per il post, molto interessante! una domanda, qual è il plugin per realizzare il form per la newsletter come il tuo? ho provato con enews (mi pare) ma a livello grafico non riesco a modificarlo a me piacerebbe uguale come il tuo ma con colori diversi! grazie
12/04/2013 alle 14:17
Ciao Pietro,
è il codice fornito da Feedburner modificato con un po’ di CSS 🙂
12/04/2013 alle 17:33
grazie roberto, comunque ti seguo sempre! il blog girandoleinfesta.com è come se lo avessi fatto insieme a te! grazie
16/04/2013 alle 08:43
Grazie a te Pietro, mi fa molto piacere 🙂
15/04/2013 alle 22:26
Ciao Roberto, ho seguito a modino le tue indicazioni ma probabilmente ho sbagliato qualcosa perchè non riesco a visualizzare la sharebar. Forse ho sbagliato a inserire il primo codice in functions.php ?
Mi daresti una mano?
Grazie!!
16/04/2013 alle 08:25
Se elimini display:none; nel codice css, la barra sarà sempre visibile. Se non la vedi, può essere un problema di dove hai inserito il codice php.
16/04/2013 alle 15:31
Ti posso chiedere dove si mette in functions.php la tua funzione? Alla fine di tutto? Dopo questo segno? ?>
17/04/2013 alle 14:02
Prima dell’ultimo ?> che trovi nel file. Salva sempre una copia del file stesso così hai una sicurezza in più, in caso di errore lo ricarichi.
23/06/2013 alle 16:09
Io non riesco a capire perché, invece, a me non va!!! Non compare assolutatamente nulla! E ho rifatto tutti passaggi più volte! 🙁
24/06/2013 alle 09:59
Prova ad eliminare dal css il display:none;