Archivio per la Categoria “Wordpress”

Chris Coyier sul sito Digging Into Wordpress ha scritto un interessante articolo su come creare degli Shortcode per la gestione dei permalink all’interno dei post di wordpress.

La funzione proposta da Chris permette di inserire dei link in questo formato:

<a href="[permalink id=49]">Contact</a>

o direttamente in questo:

[permalink id=49 text='Contact']

per generare degli output così:

<a href="/contact/">Contact</a>

(nel caso specifico l’id della pagina 49 corrisponderebbe ad una pagina con permalink di nome “contact” )

Qquesta funzione risulterebbe particolarmente comoda nel momento in cui si dovesse effettuare effettuare una migrazione del sito web o  si decidesse di cambiare il nome di un permalink.

Poiché sono molto attento all’usabilità e ci tengo al fatto che il mio sito possa, nel suo piccolo, influenzare i motori di ricerca, ho deciso di apportare delle modifiche al codice proposto da Chris per inserire anche l’attributo
“title” nel link.

Partendo quindi da uno short code che comprenda l’attributo title:

[permalink id=49 text='Contact' title="Contattami"]

e produca questo ouput:

<a href="/contact/" title="contattami">Contact</a>

Vediamo come ho agito:

Questo è il codice proposto da Chris:

function permalink_thingy($atts) {
	extract(shortcode_atts(array(
		'id' => 1,
		'text' => ""  // default value if none supplied
    ), $atts));

    if ($text) {
        $url = get_permalink($id);
        return "<a href='$url'>$text</a>";
    } else {
	   return get_permalink($id);
	}
}
add_shortcode('permalink', 'permalink_thingy');

e così è come lo ho trasformato io:

function permalink_raffaele($atts) {
	extract(shortcode_atts(array(
		'id' => 1,
		'text' => "",
		'title' => "",
    ), $atts));

	//se c'è il testo ma non il title
    if (($text)&& (!$title)) {
        $url = get_permalink($id);
        return "$text";
    }
	//se c'è il title ma non il testo
	if ((!$text) && ($title)) {
        $url = get_permalink($id);
        return "$text";
    }
	//se ci sono sia testo che title
	if (($text) && ($title)) {
        $url = get_permalink($id);
        return "$text";
    }
	//se mancano entrambi ovvero se si è usata questa sintassi: Using without providing text
	if ((!$text) && (!$title)) {
          return get_permalink($id);
	}
}
add_shortcode('permalink', 'permalink_raffaele');

adesso inserendo uno short link come segue:

[permalink id=219 text='Corri Alessandro' title="Corri Alessandro!"]

ottengo il seguente risultato

Corri Alessandro
<a title="Corri Alessandro!" href="http://www.raffaelepersichetti.com/corri-alessandro/">Corri Alessandro</a>

Comments Nessun Commento »