+ MENY
2011 Sep 5
3

Bygga WordPressplugin – del3 – Så gör du shortcodes

Det här är det sista inlägget i en serie av tre inlägg som handlar om att göra egna wordpressplugin. I den första delen gick vi igenom grunderna och fick vårt plugin att ”göra något”. I den andra delen byggde vi en kontrollpanel till pluginet inne i wordpress och lärde oss att använda databasen med hjälp av add_option och update_option. I denna sista del skall vi titta på det som kallas för wordpress shortcodes och hur dessa kan användas i ett plugin. Dessa är nämligen mycket användbara för användaren av ditt plugin!

WordPress shortcodes – Så fungerar dom

Själva syftet med shortcodes är framförallt att kunna förenkla för användaren av ditt plugin. Det finns mängder av användningsområden men i dess enklaste form skulle en shortcode kunna användas för att generera en bit kod som du vill slippa skriva i varje gång. Låt säga att vi har en tabell som vi vill kunna använda flera gånger på vår wordpress blogg. Istället för att då skriva i hela koden eller klistra in ett sjok kod i ditt inlägg (det blir väldigt rörigt) så kan vi skriva i [mytable] (detta är alltså shortcoden) som anropar en funktion i vårt plugin som genererar hela koden. Smidigt va!

Dessutom kan du om du vill använda shortcodes med attribut eller runt ett innehåll där något speciellt skall göras med innehållet. På det viset kan man göra väldigt många anpassningar. En sammanställning av olika typer Shortcode API skulle kunna göras på följande vis:

  • [myshortcode] – denna shortcode har inga attribut, används bara för att hämta ett innehåll.
  • [myshortcode attribute=”mitt_attribut”] – Här kan attributet varieras för att hämta olika innehåll beroende på vilket attribut som väljs. Tex skulle vi kunna skriva [myshortcode attribute=”adtraction”] för att hämta en affilitekod från affiliatenätverket adtraction.
  • [myshortcode id=”2″] Samma som attributlösningen men här döps attributet till id.
  • [myshortcode] content [/myshortcode]  Här skickar vi med content som vi ”taggar” in. Lämpligt för att göra något specifikt med just detta content.

Men nog om allmänt om shortcodes, låt oss nu testa några olika exempel på hur du skapar dem!

Skriva en funktion som använder shortcodes i pluginet

Har du hängt med i de första två artiklarna (del1, del2) i den här serien kommer detta att bli mycket lätt. Först skapar vi grunden till vårt plugin och aktiverar det. Sedan skall vi lägga till en funktion som skapar själva shortcoden och slutligen lägga till en hook som aktiverar den.

Steg 1 – Skapa pluginfilen och aktivera pluginet

Först skapar du en php fil som vi i vårt fall döper till mitt_lilla_schortcode.php och lägger i wp-content/plugins/mitt_lilla_shortcode/mitt_lilla_schortcode.php. Sedan kan man klistra in följande kod:

<?php
/*
Plugin Name: Mitt lilla Shortcodeplugin
Plugin URI: http://mindomän.se
Description: Här beskriver jag vad mitt plugin skall göra och vad användaren har för nytta av det
Version: 1.0
Author: Lilla Jag
Author URI: http://mittpluginsadress.se
*/

?>

Detta räcker för att kunna aktivera pluginet och se det inne i wordpress kontrollpanel.

Steg 2 – Skapa vår shortcodefunktion och aktivera den med en hook

Nu skall vi skriva en funktion och lägga till en hook som aktiverar denna funktion. Koden som vi skriver är följande:

/*
hooken för att lägga till shortcoden.
När man skriver i [min_lilla_kod] i inlägget anropas funktionen mitt_lilla_shortcode_handler()
*/
add_shortcode( 'minkod', 'mitt_lilla_shortcode_handler' ); 

function mitt_lilla_shortcode_handler () {
    $myshortcode = '<a target="_blank" href="http://websimon.se">Gå till Websimon.se</a>'; //här lägger jag in min kod i variabeln $myshortcode
    return $myshortcode; //returnerar koden när [minkod] skrivs in i inlägget
}
  • Här samlar vi alltså ihop en kodsnutt i variabeln $myshortcode och returnerar den i funktionen.
  • Vi aktiverar vår shortcode med add_shortcode( ‘dinshortcode’, ‘funktionen som skapar shortcoden’  );

När jag nu skriver i [minkod] kommer min vald länkkod att komma upp i inlägget.

 Använda shortcodes för att spara affiliate trackinglänkar

Jag tänkte att vi skulle titta på ännu ett sätt att använda sig av shortcodes som kanske allra mest lämpar sig för dig som jobbar med affiliatemarknadsföring i någon form. Istället för att hålla ordning och klippa och klistra in affiliatekoder i dina inlägg skall vi nu bara göra det en gång. Sedan använder vi oss av shortcodes för att hämta dessa länkar!

Steg 1 – Skapa en ny shortcode funktion som kan ta emot attribut

Nu skapar vi en ny typ av shortcodefunktion som tillåter att vi tar emot olika attribut. Det vi vill kunna göra är att kunna lägga till tex [aff id=”tradedoubler”] i våra inlägg för att generera en trackinglänk eller en trackingbanner i våra inlägg. Vi skapar därför funktionen mitt_lilla_shortcode_affiliate som ser ut enligt följande:

function mitt_lilla_shortcode_affiliate ($atts){ //
    extract( shortcode_atts( array(
        'id' => 'default',
    ), $atts ) );
}
  • Här kan vi alltså ta emot en array av attribut där vi i vårt fall väljer att kalla attributet för id.
  • Just nu returnerar vi ingenting men vi kan använda oss av id attributet för att returnera olika innehåll.

Steg 2 – Skapa en if sats som returnerar olika innehåll beroende på attribut

Nu har vi ju ännu ingen nytta av den här funktionen men nu skall vi skapa en if sats för att enkelt kunna peta ut olika innehåll beroende på attributet. Nu skriver vi följande kod:

add_shortcode( 'aff', 'mitt_lilla_shortcode_affiliate' ); //aktiverar shortcoden [aff id="något attribut"]

function mitt_lilla_shortcode_affiliate ($atts){ //
    extract( shortcode_atts( array(
        'id' => 'default',  //vi väljer att kalla vårt attribut för id
    ), $atts ) ); 

    if ($id == 'tradedoubler') { //aktiveras när du skriver i [aff id="tradedoubler"]
        return 'Min trackingkod från tradedoubler';

    } elseif ($id == 'adtraction')  { //aktiveras när du skriver i [aff id="adtraction"]
        return 'Min trackingkod från adtraction';

    } elseif ($id == 'cj')  { //aktiveras när du skriver i [aff id="cj"]
        return 'Min trackingkod från commission junction';

    } elseif ($id == 'cjban')  { //aktiveras när du skriver i [aff id="cjban"]
        return 'Min bannertrackingkod från commission junction';
    }
}

Här har vi alltså en if sats som kollar vilket id (attribut) som står i shortcodestaggen och returnerar olika material beroende på id. På detta vis skulle du alltså kunna slippa att göra ett arbete mer än en gång. Personligen har jag stor nytta av detta på mina affiliatesidor.

Skriva wordpressplugin – en avslutande kommentar

Personligen tycker jag att kunskapen att kunna skriva egna wordpressplugin både är nytta och nöje. Det är kul att kunna kombinera wordpress API med egna programmeringslösningar och samtidigt ha nytta av det i mina kommersiella projekt. Nu har jag gått igenom en del av grunderna i att skriva wordpressplugin men självklart finns det massor mer att lära sig vad det gäller funktionalitet, kunna skapa egna tabeller och utnyttja dessa osv osv. Jag hoppas ändå att dessa tre inlägg har kunnat hjälpa dig att komma igång!

Skriva eget plugin

SPONSRAT - REKOMMENDERADE OCH TESTADE WEBBHOTELL:
Webbhotell Pris/mån Utrymme Trafik Domän
City Network 74kr 250GB 5000GB Obegränsat
Binero 36kr 10GB 30GB Obegränsat
Surftown 36kr 10GB 30GB Obegränsat
One.com 12kr 3GB Fri 1
Loopia 83kr 5GB Fri Obegränsat
Strongbox 65kr 5GB 40GB Obegränsat
Om Simon Rybrand
Jag som driver den här bloggen heter Simon Rybrand. Här skriver jag om entreprenörskap, internetmarknadsföring och webbdesign.Jag driver framförallt sajten MatematikVideo.se där målet är att hjälpa så många som möjligt att lyckas med sina kurser i matematik.

3 Kommentarer

  1. Jonas skriver:

    Märks på inläggstakten att terminen kommit igång? :)

  2. websimon skriver:

    Haha, ja det stämmer Jonas. Dock är din inläggstakt på grenfeldt kanske lite sämre? haha.

    Tänkte faktiskt göra en miniuppdatering senare idag.

  3. Dan skriver:

    Skriv gärna mer, hur man ex sparar info om användare och skickar dem ex till svensk eller engelsk sida beroende på ip.

Comment