WordPress: Sådan trækker du TinyURL for et indlæg ind

Dette tip berører kun WordPress, men med lidt ændring i koden, burde det kunne portes til at virke generelt på PHP. Mere om det i slutningen af indlægget.

Du kender muligvis TinyURL, en simpel tjeneste, der tager et langt link og gør det kortere. På dansk har vi kortlink.dk, men TinyURL er mere udbredt. Derudover har TinyURL et ret simpelt API, som Dave Winer også har skrevet om.

TinyURL-API'et fungerer på den måde, at du bruger en .php-fil hos dem (http://tinyurl.com/api-create.php), som du sender en URL ind i. TinyURL's api-create.php spytter så en TinyURL http-URL ud til dig. Lad os tage et eksempel:

http://tinyurl.com/api-create.php?url=http://www.onlineminds.dk

Resultat: http://tinyurl.com/6zu3ju.

PHP er din ven. Din bedste ven.
Okay, det var den nemme del. Nu skal vi have fat i den TinyURL, som bliver spyttet ud. Her bruger vi PHP, som også er det sprog, WordPress er skrevet i.

For overblikkets skyld slår jeg denne operation ud på to variabler, men det kan i virkeligheden godt gøres i ét hug, som jeg vil vise lige om lidt.

Først får vi fat i URL'en på den side, som spytter TinyURL'en ud, altså fx:
http://www.tinyurl.com/api-create.php?url=http://www.onlineminds.dk.

Det gør vi på den snedige måde, at vi tager den første del af URL'en (til og med "?url=") og slår det sammen med WordPress-funktionen "get_permalink", som spytter URL'en til et blogindlæg ud. I PHP ser det således ud:

<?php $gettinyurl = "http://tinyurl.com/api-create.php?url=" . get_permalink(); ?>

Variablen "gettinyurl" er nu sat til den URL, som browseren lander på, når api-create.php spytter en TinyURL til den pågældende side ud. Nu skal vi have fat i det indhold, den spytter ud: TinyURL'en. Her har PHP en herlig funktion, der hedder file_get_contents (jeg skylder en stor tak til vores udvikler Søren Pedersen her, som gjorde mig opmærksom på denne!).

Vi laver en ny variabel (lad os kalde den "tinyurl") og sætter den til at trække indholdet ud, via den parameter ("gettinyurl"), som vi lige har sat:

<?php $tinyurl = file_get_contents($gettinyurl); ?>

Nu er det eneste, du skal gøre at spytte "tinyurl" ud der, hvor du vil have TinyURL'en vist:

<?php echo $tinyurl; ?>

Sådan.

Bemærk: Dette virker kun, når du er i The Loop i WordPress, kort fortalt der, hvor WordPress trækker indlæg ud. Det er i samme område, som overskrift, link og antal kommentarer til et indlæg bliver trukket ud.

Plug it in, plug it in
Efter at have kodet dette, er jeg blevet opmærksom på et WordPress-plugin, Tiny Link, som gør præcis det samme, den gør det bare i ét smæk. Koden til Tiny Link-plugin'et ser således ud:

function TinyLink() {
// get the tinyurl link and create one for the current permalink
$tinylink = file_get_contents("http://tinyurl.com/api-create.php?url=" . get_permalink());

// Print the result
echo $tinylink;

}

Altså præcis det samme. Plugin'et gør dog noget smart. Det laver en funktion med navnet "TinyLink", som du kan kalde, hvor som helst, du vil have det (stadig så længe du er i The Loop) ved at skrive:

<?php TinyLink() ?>

Få det til at spille udenfor WordPress
Som jeg lovede tidligere, kan dette også lade sig gøre, selvom man ikke nødvendigvis er i WordPress. Og det kan det da.

I stedet for get_permalink skal du bruge en linje PHP, der spytter URL'en på den aktuelle side ud. Jeg fandt en her:

<?php $url = "http" . ((!empty($_SERVER['HTTPS'])) ? "s" : "") . "://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; ?>

De hurtige har sikkert gættet, hvordan kaldet til TinyURL-api'et skal se ud:

<?php $tinyurl = file_get_contents("http://tinyurl.com/api-create.php?url=" . $url); ?>

Altså fuldstændig som i før, bare med "$url" i stedet for "the_permalink()". Nu er variablen "tinyurl" TinyURL'en til den URL, som variablen bliver skrevet på. Værsgo' :-)

Fik jeg nævnt, at PHP er det sejeste sprog i verden? ;-)

Forfatter: Lars K Jensen

Lars er uddannet journalist og arbejder nu med udviklingsprocesser og redaktionel udvikling. Han skriver blandt andet på Medieblogger. Følg ham på Twitter: @larskjensen.

Deltag! Skriv en kommentar: