Hay veces que tenemos que crear un link interno a nuestro sitio en alguna entrada o pagina en especial.

Generalmente usaremos una estructura parecida a la siguiente:

<a href="/contacto/">Contacto</a>

Si bien es funcional, no es del todo correcto usar esta forma ya que el slug puede cambiar con el tiempo. Una mejor forma seria poder lograr algo así:

<a href="<?php echo get_permalink(12); ?>">Contacto</a>

Donde “12″ representa el ID de la entrada o pagina que queremos linkear. Esta estructura es mejor, ya que como lo dije anteriormente el slug puede cambiar con el tiempo o si en algun momento tenes que hacer una migración de dominio, la estructura del permalink seguirá siendo la misma.

Por eso una forma ideal seria crear un pequeño Hack dentro de nuestro archivo functions.php y aplicar una función que nos permita crear un Shortcode y poder usarlo para linkear internamente.

Para eso abrimos nuestro archivo functions.php e insertamos:

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');

Cada vez que necesitemos linkear a alguna entrada o pagina podemos usar alguna de estas estructuras:

<a href="[permalink id=49]">Texto a mostrar</a>
[permalink id=49 text='Texto a mostrar']

Solo debemos saber el ID de la entrada o pagina y estaremos listos.

Gracias a Digwp por esta receta