Sådan får du Facebooks "Like"-knap på dine WordPress-blogindlæg

Facebook har i dag lanceret en række ny features, en af dem er en "Like"-knap til alle websites. Se her, hvordan du får en sådan på din WordPress-blog.

Facebook har i dag lanceret deres Social Plugins. Et af dem er Like-knappen.

Det fungerer på den måde, at du kan få en "Like"-knap til at optræde på dit website. Når folk så trykker "Like" bliver det postet på deres Facebook, at de synes om det. Filmsitet IMDb har fx tilføjet en Like-knap til alle film.

Når man så er inde på en film på IMDb kan man se, hvilke af ens venner, der har klikket "Like". Smart.

"Like"-knappen kan let implementeres med en fast URL. Men ville det ikke være federe, hvis du kunne lave en "Like"-knap på alle indlæggene på din blog?

Det har jeg gjort på min blog på Medieblogger.dk og også her på Online Minds.

Det kan du ved at bruge lidt PHP-kode i WordPress.

Gå ind og redigér single.php-filen i dit tema og indsæt følgende kode der, hvor du vil have "Like"-knappen/-boksen til at være.
Her er koden, præcist, som den er brugt her på Online Minds:

<p style="border: none;"><strong>Synes du om dette indlæg?</strong><br />
<iframe src="http://www.facebook.com/widgets/like.php?href=<?php echo get_permalink(); ?>"
scrolling="no" frameborder="0"
style="border:none; width:450px; height:65px"></iframe></p>

Så dukker boksen op på dit site. Meget nemt, hva? :-)

Lige under denne tekst kan du se, hvordan det ser ud.

Sådan maskerer du dit databasekodeord under WordPress-installationen

Jeg har lige skrevet dette tip i en kommentarVideomonster.dk, men jeg tænkte, at det måske var noget, som andre også var interesserede i, så jeg valgte at dedikere et kort indlæg til det :-)

Hvis du er ude og skal vise nogle andre, hvordan man installerer WordPress (læs: hvor nemt det er at installere WordPress), så er det ikke særlig fedt, at dit kodeord til din database ikke er maskeret.

Det kan du imidlertid løse ved at ændre i én linie i én fil.

Åbn \wp-admin\setup-config.php-filen på din computer (jeg anbefaler Notepad++ til opgaven) og find linie #86, som ser således ud (i dansk WordPress):

<td><input name="pwd" type="text" size="25" value="kodeord" /></td>

Lav det om til:

<td><input name="pwd" type="password" size="25" value="kodeord" /></td>

Så er dit databasekodeord maskeret, så andre ikke får nogle gode idéer, når du gennemgår WordPress-installationen for dem.

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

Sådan får du æ, ø og å med, når du læser RSS-feeds med MagPie

Hvis du arbejder, har arbejdet eller blot eksperimenterer med at hive RSS ind på forskellige sider, kender du muligvis MagPie, der er en RSS-parser skrevet i PHP. MagPie har en række gode features, som jeg nok skal undlade at nævne her, det kan du læse mere om på MagPies side.

Men. Hvis du hiver danske feeds ind, så vil du opleve, at specialtegn (altså tegn som æ, ø, å) blver kodet forkert og ligner noget, der er løgn. Dette skyldes, at MagPie ikke automatisk kigger på, hvilket format RSS-feedet bruger.

Derfor: Hvis du oplever, at dine danske tegn ser underlige ud, når du hiver et RSS-feed ind via MagPie, er det første, du skal gøre, at tjekke hvilket tegnsæt, feedet er i. Lad os tage mit Lars K Jensen-samlefeed fra feed.informer (for nu at være narcissistisk :-)):

http://app.feed.informer.com/digest3/JJMHLP3ND8.rss

Kig nu i kildekoden for feedet, hvis du er på Firefox, kan du gøre dette ved at trykke CTRL+U — CMD+U, hvis du er på Mac. Kig i den øverste linje:

<?xml version="1.0" encoding="utf-8"?>

Bingo. Her er altså tale om et feed kodet i UTF-8-tegnsættet. Det skal vi nu fortælle MagPie. Gå ind i den .php-fil, hvor du kalder MagPie.

Lige inden du kalder MagPie (formentlig med require_once) skal du skrive:

define('MAGPIE_INPUT_ENCODING', 'UTF-8');
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8'

Så skulle dine mærkelige tegn gerne blive til læselige bogstaver. Er der tale om et andet tegnsæt end UTF-8, skal du selvfølgelig skrive det ud for MAGPIE_INPUT_ENCODING.

PS: Jeg fandt løsningen her på Simplestation.com efter at have Googlet mig frem til det.

Sådan flytter du din WordPress-blog

Sådan flytter du fra en WordPress blog til en anden og sikrer, at der er et fornuft link mellem de to blogs, så eventuelle læsere af den gamle, kan finde det samme indlæg på den nye. [Læs mere]

Nogle gange sker det, at man må flytte sin blog, således at den får en ny adresse. Et problem er dog, at de gamle blogindlæg ligger i søgemaskinernes index og, måske, blandt folks foretrukne, og det går jo ikke, hvis de pludseligt lægger en kommentar på den gamle blog, som man ikke holder øje med længere.

Men: Takket være PHP — som i øjeblikket er mit svar på alt ;-) — kan man faktisk lave et link, som automatisk linker til det samme indlæg på den nye blog.

Det kræver blot, at du flytter din blog. Men har du en WordPress af nyere dato, er det så nemt som at klø sig i nakken. Måske endda nemmere!

I WordPress klikker du Håndter –> Indlæg –> Eksporter. Eksporter alt det, du har brug for. Når den er færdig står du med en .xml-fil med alt, hvad du har eksporteret.

Nu går du over i din nye blog, som formentlig er gabende tom. Klik på Håndter –> Indlæg –> Importer og klik på "WordPress", formentlig nederst i listen.

Find din fil og upload og importer den. Lad WordPress gøre sit arbejde færdigt og voila! Så har du alle dine indlæg, kommentarer og alt det andet på plads.

Nu skal der så skabes et link i mellem de gamle og de nye indlæg. Her bruger vi PHP-funktionen "str_replace". Den gør det, at den finder et ord eller en sætning, i et område, som du definerer, og erstatter den med noget andet andet, som du så også definerer.

I PHP skriver man: str_replace("1", "2", "3").

  1. Den tekst der skal erstattes
  2. Den tekst der skal erstattes med
  3. Den tekst, som der skal ledes i

I PHP-manualen er der nogle gode eksempler.

Anyway, tilbage til vores WordPress. Det er vigtigt, at du har samme permalink-struktur begge steder. I dette tilfælde, har vi den dato- og navnebaserede, som genererer links som http://www.test.dk/2008/01/11/dette-er-en-test.

Har du det, er det bare at gå i gang.

Vi ved jo, at de sidste led (fra /årstal og frem) er det samme for begge blogs, så str_replace behøver kun gælde for det, der reelt har ændret sig. Forvirret? Lad os tage et eksempel:

For nyligt flyttede jeg min blogcentral.dk/newmedia-blog til blog.larskjensen.dk. Og da det kun er starten af URL'en, der skal ændres, skriver jeg altså:

str_replace("blogcentral.dk/newmedia", "blog.larskjensen.dk", get_permalink($id))

Det sidste led — get_permalink($id) — henter URL-adressen for det pågældende indlæg, og str_replace erstatter "blogcentral.dk/newmedia" med "blog.larskjensen.dk" således at:

http://blogcentral.dk/newmedia/2008/01/06/new-widget-management-in-wordpress-25/

bliver til:

http://blog.larskjensen.dk/2008/01/06/new-widget-management-in-wordpress-25/

Smart, ikk?

Nu skal vi blot have skrevet den tekst ind. Det kan være gøre ved at sætte en parameter til at være vores str_replace og så sætte det ind som et HTML-link ved hjælp af PHP's "echo"-funktion:

<? $newurl = str_replace("blogcentral.dk/newmedia", "blog.larskjensen.dk", get_permalink($id));?>
<a href="<? echo $newurl; ?>"><? echo $newurl; ?></a>

For at hjælpe vores læsere kan vi tilsætte lidt tekst, som forklarer, at bloggen er flyttet og at kommentarer ikke bliver læst, men at de kan finde blogindlægget andetsteds:

<p>Whoops! This blog is closed and comments will not be read. Check <a href="http://blog.larskjensen.dk" target="_blank">blog.larskjensen.dk>/a< instead. If you want to leave a comment, please find this post at its new location:</p>

<? $newurl = str_replace("blogcentral.dk/newmedia", "blog.larskjensen.dk", get_permalink($id));?>
<a href="<? echo $newurl; ?>"><? echo $newurl; ?></a>

Nu har en person, der læser et af dine indlæg på din gamle blog et link, som han/hun kan klikke på og komme til det rigtige indlæg.

Bemærk: Al PHP-kode skal være i mellem en <?-tag og en ?>-tag:

<? php-kode bla bla bla ?>

Nu skal denne kode blot indsættes i den side, som indeholder hvert enkelt indlæg i WordPress. Det er typisk "Enkelt side" i WordPress i temaredigeringen, mens andre temaer, bruger den samme fil (typisk "theloop.php") til enkelte indlæg som til hele forsiden af din blog.

Under "the_content" indsætter du nu din kode. Sørg for at lave et nyt afsnit efter det <div>, så du ikke ødelægger det såkaldte "loop", som henter dine indlæg ind.

Lav din egen søgemaskine med Google site-search

Med lidt simpel kodning kan man lave et søgeplugin, der bruger Google site-søgning, hvorved man lade Google gøre arbejdet. [Læs mere]

Ret mig, hvis jeg tager fejl, men det er vist muligt at lave sin egen Google-søgning, hvor man vælger hvilke sider, Google skal søge på. Her er dog et tip, som jeg brugte på et tidspunkt, fordi søgemaskinen på EBblog langt fra er noget at råbe hurra for.

Det går i alt sin enkelhed ud på, at man udnytter Googles "site-søgning", hvor man ved at skrive "site:ebblog.dk" kun søger på ebblog.dk-sitet. Dette gøres ved hjælp af noget basal PHP kode og en simpel formular:

  1. Brugeren indtaster sin søgning i tekstfeltet og trykker "Søg"
  2. Ved hjælp af PHP lægges denne søgning sammen med (i dette tilfælde) "site:ebblog.dk"
  3. Der viderestilles til en søgning på Google

Min simple søgemaskine til EBBlog kan ses på puskas.dk/ebblog.

Bemærk at søgeresultaterne vil blive sorteret efter Google Page Rank og ikke kronology, men kan man leve med det, kan man altså lave en ok søgemaskine :-)

Du kan se koden til søgemaskinen på puskas.dk/ebblog/source.txt, men for nemheds skyld, har jeg pastet den ind her:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<? // Tjekker for søgestreng og viderestiller, hvis der er en søgestreng ?>
<? if ($s) { ?>
<META HTTP-EQUIV="Refresh"
CONTENT="0; URL=http://www.google.com/search?q=site:ebblog.dk+<? echo $s; ?>">
<? } else { ?>
<? // Hvis der ikke er nogen søgestreg, vises søgeformularen ?>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Søg på ebblog.dk</title>
</head>
<body>
<font face="Verdana, Arial, Helvetica, sans-serif">
<h3>Søg på ebblog.dk</h3>
<form method="get" action="<?php echo $PHP_SELF; ?>">
<input type="text" name="s" />
<input type="submit" value="Søg" />
</form>
<? } ?>
</body>
</html>

Med en simpel "if"-sætning tjekkes det, om $s (den parameter, som jeg har defineret i tekstfeltets "name"-felt) eksisterer (så ved vi, at der er foretaget en søgning). Hvis den gør det så viderestilles der til:

http://www.google.com/search?q=site:ebblog.dk+<? echo $s; ?>">

Her slås søgningen ($s) sammen med "site:ebblog.dk" og vi lander på en Google-søgning.

Det du skal gøre er, udover selvfølgelig at ændre i H2-overskriften, at ændre "site:ebblog.dk" til "site:" og så noget andet, så spiller det.

Nu kan du evt. lave et browsersøgeplugin (hvor man kan søge via tekstfeltet i øverste højre hjørne af Internet Explorer 7 og Firefox 2 (og nyere). Jeg har tidligere lagt en guide til, hvordan du laver dit eget søgeplugin ud her på Online Minds, blot skal du i din xml-fil pege på sin søgeside. I dette tilfælde, hvor søgemaskinen ligger på puskas.dk/ebblog skriver vi:

<Url type="text/html" template="http://puskas.dk/ebblog?s={searchTerms}" />

Lav et ikon til søgemaskinen, som beskrevet i guiden og inkludér det i søgesidens meta-tags, og så er du flyvende.

Du er selvfølgelig mere end velkommen til at tyvstjæle koden, hvis du har lyst. I vores tilfælde med EBblog har det i hvert fald hjulpet at trække lidt på Google, indtil leverandøren giver os en ordentlig søgemaskine, vi kan være bekendt.