SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Vincent Boiardt
Technical Director, Oakwood

@vincentboiardt
http://boiardt.se
http://oakwood.se
http://wpquicktips.wordpress.com/
http://open.spotify.com/user/vinceb




www.digster.se                        www.oakwood.se
Om Digster
•Varumärke skapat av Universal Music
•Redaktionella spellistor skapade av Digsters redaktörer
•Spellistor skapade av artister
•Uppdaterade spellistor, t ex Digster HITS




www.digster.se                                             www.oakwood.se
Om Digster
•Lanserades december 2009
•Första version gjordes i Umbraco
•Andra versionen gjordes i WordPress och lanserades mars 2011




www.digster.se                                                  www.oakwood.se
Om Digster
                         Posttyper och taxonomier




           WP Cron               Mobilt             WordPress-nätverk



                           Egna komponenter


  Facebook Integration                                    API


                              Översättning



www.digster.se                                                   www.oakwood.se
Om Digster
•WordPress-nätverk - WordPress Multisite, tidigare WPMU
•Finns tillgängligt i 14 länder bland annat USA, England, Tyskland och Australien
•185 000+ användare över hela världen




www.digster.se                                                             www.oakwood.se
Om Digster
•Ett tema där all funktionalitet finns

•Några få tillägg...
•Domain Mapping, egna domäner för varje site
•Widget Logic, möjliggör villkor för widgets
•Mobile Smart, för att visa mobiltema för mobila enheter
•Samt ett par egenutvecklade för att t ex sync:a e-postadresser med nyhetsbrevstjänst




Mer information:
http://wordpress.org/extend/plugins/wordpress-mu-domain-mapping/
http://wordpress.org/extend/plugins/widget-logic/
http://www.mobile-smart.co.uk/

www.digster.se                                                             www.oakwood.se
www.digster.se   www.oakwood.se
www.digster.se   www.oakwood.se
Struktur
•Post typer                     register_post_type( 'playlist' );
 •Spellistor - playlist
                                register_post_type( 'section' );
 •Sektioner - section
 •Redaktörer - editor           register_post_type( 'editor' );

                                register_taxonomy( 'genre' );
•Taxonomier                     register_taxonomy( 'suitable' );
 •Genre - genre
                                register_taxonomy( 'mood' );
 •“Passar till” - suitable
 •Stämning - mood               register_taxonomy( 'artist' );

 •Artister - artist             register_taxonomy( 'section-tax' );
 •Sektion - section-tax
                             Mer information:
                             http://codex.wordpress.org/Function_Reference/register_post_type
                             http://codex.wordpress.org/Function_Reference/register_taxonomy




www.digster.se                                                                   www.oakwood.se
Sektioner - post type - section


Spellistor - post type -
        playlist
                                                             Redaktörer - post type -
                                                                     editor




Passar till - taxonomy -                                       Sidebar och widgets -
        suitable                                                 dynamic_sidebar()




   www.digster.se                                                   www.oakwood.se
Omslag -
        the_post_thumbnail()        Länkar - post meta - services
                                   Passar till - taxonomy - suitable




                                          Innehåll - the_content()

 Genre - taxonomy - genre
 Tid - post meta - duration
 Arister - taxonomy - artist
Stäming - taxonomy - mood
Låtlista - post meta - tracklist



                                         Kommentarer




         www.digster.se                    www.oakwood.se
Administration för användare
•Registrering och login
•Användarinställningar




www.digster.se                 www.oakwood.se
Skapa egna komponenter - “Catch URI”
•En funktion inspirerad            function mytheme_catch_uri() {
 av BuddyPress                      http://example.com/user/vincent
                                     $uri = $_SERVER['REQUEST_URI'];

•Bryter ner URI till en array           $uri = str_replace( '?' . $_SERVER['QUERY_STRING'], '', $uri );
                                        $uri = split( '/', $uri );
•Körs vid init                      Arrayarray_values(
                                     $uri = (                  array_filter( $uri ) );

•Lätt att bygga komponenter             [0] => 'user',
                                        if ( isset($uri[0]) ) {


/register/                              [1] => 'vincent'
                                         switch ($uri[0]) {
                                                case ‘user’:
/login/                             )              //Do stuff

/settings/                                  }
                                        }
/profile/                           }
                                   add_action( 'init', 'mytheme_catch_uri', 5 );




                                Mer information:
                                http://wpquicktips.wordpress.com/2011/03/29/simple-catch-uri-function/




www.digster.se                                                                           www.oakwood.se
Användarfunktioner
•Facebook Integration
•Användarprofil
•Favoriter, notifierar användaren när en favorit uppdateras




www.digster.se                                               www.oakwood.se
Facebook
•Använder både Facebooks JavaScript- och PHP-ramverk
•Loggar in frontend med JS SDK
•Verifierar användaren backend med PHP SDK
                         Logga in på FB/app

   JS SDK                          FB
                                                 $user_id = $facebook->getUser();
                                                                                         Login/
                               Digster                       PHP SDK                     Register



Mer information:
                                                                                    Hitta användare
                                                                                     med $user_id
https://developers.facebook.com/docs/reference/php/facebook-api/
https://developers.facebook.com/docs/reference/javascript/

www.digster.se                                                                      www.oakwood.se
Annat smått och gott
•Import av spellistdata från Spotify
•Sync av samma data via WordPress egen cron-funktionalitet
•Värvning/rekrytering




www.digster.se                                               www.oakwood.se
WP Cron
•Inte en riktig crontab, utan en “psuedo-cron”
•Aktiveras av t ex en besökare
•Aktiveras efter den schemalagda tiden
•Intervaler som finns tillgänliga är hourly, daily och twicedaily
•Gör egna intervaller!


                 Hourly                                           Daily

  •Spellistor-sync                                    •Nyhetsbrev-sync



Mer information:
http://codex.wordpress.org/Function_Reference/wp_schedule_event

www.digster.se                                                            www.oakwood.se
Översättning
•Använd funktionerna __() och _e()
•Generera och översätt .po-filer med t ex Poedit
•Digster översatt till 10 språk


     _e( ‘My translatable string’, ‘mytheme’ );
     load_theme_textdomain( 'mytheme', TEMPLATEPATH . '/languages' );




Mer information:
http://codex.wordpress.org/Translating_WordPress
http://codex.wordpress.org/Function_Reference/load_textdomain
http://codex.wordpress.org/Function_Reference/_e
http://codex.wordpress.org/Function_Reference/_2

www.digster.se                                                      www.oakwood.se
Mobiltema
•Child-tema av orginaltemat
•Plugin “Mobile Smart” laddar temat
•Möjlighet att se desktop version




Mer information:
http://www.mobile-smart.co.uk/

www.digster.se                        www.oakwood.se
iOS applikation
•Utvecklades tillsammans med Appego
•Baserades på en tidig version av API:t




Mer information:
http://itunes.apple.com/se/app/digster/id462752433?mt=8

www.digster.se                                            www.oakwood.se
API
•Inspirerad av PHP-ramverket Simple-REST
•Data i två format: JSON & XSPF (“spiff”, XML Shareable Playlist Format)



    <?xml version="1.0" encoding="UTF-8"?>
    {
    <playlist xmlns="http://xspf.org/ns/0/" version="1">
    	    "status":"ok",
    	    <identifier>digster-hits</identifier>
         "playlist":{
    	    <title>Digster HITS</title>
         	     "id":27,
    	    <creator>2</creator>
         	     "title":"Digster HITS",
    	    <annotation>
         	     "author":"2",
    	    	     Digster HITS är alltid laddad med alltid laddad med de bu00e4sta..."
               "description":"Digster HITS u00e4rde bästa...
    	    </annotation>
         	     ...
    	    ...
         }
    </playlist>
    }




Mer information:
Representational state transfer (REST)
https://github.com/deepeshmalviya/simple-rest/
http://www.xspf.org/

www.digster.se                                                                          www.oakwood.se
Spotify App
•Släpptes i mars 2012
•Använder sig av Digsters API
•Spotify App API - HTML/CSS/JS
•Enorm trafikökning




Mer information:
https://developer.spotify.com/technologies/apps/

www.digster.se                                     www.oakwood.se
www.digster.se
www.oakwood.se
 @vincentboiardt

Weitere ähnliche Inhalte

Ähnlich wie WP Meetup i Norrköping 2012-05-25

HT23 - DA354A - Webbprogrammering med Python
HT23 - DA354A - Webbprogrammering med PythonHT23 - DA354A - Webbprogrammering med Python
HT23 - DA354A - Webbprogrammering med PythonAnton Tibblin
 
Using Microformats to aggregate data
Using Microformats to aggregate dataUsing Microformats to aggregate data
Using Microformats to aggregate dataGabriel Svennerberg
 
HT17 - DA156A - Sammanfattning av kursen
HT17 - DA156A - Sammanfattning av kursenHT17 - DA156A - Sammanfattning av kursen
HT17 - DA156A - Sammanfattning av kursenAnton Tibblin
 
HT17 - DA354A - Webbapplikation
HT17 - DA354A - WebbapplikationHT17 - DA354A - Webbapplikation
HT17 - DA354A - WebbapplikationAnton Tibblin
 
HT18 - DA354A - Bottle web app
HT18 - DA354A - Bottle web appHT18 - DA354A - Bottle web app
HT18 - DA354A - Bottle web appAnton Tibblin
 
HT15, DA354A - Introduktion till Webbprogrammering - Bottle
HT15, DA354A - Introduktion till Webbprogrammering - BottleHT15, DA354A - Introduktion till Webbprogrammering - Bottle
HT15, DA354A - Introduktion till Webbprogrammering - BottleAnton Tibblin
 
Lär dig ajaxifiera dina tillägg med jQuery
Lär dig ajaxifiera dina tillägg med jQueryLär dig ajaxifiera dina tillägg med jQuery
Lär dig ajaxifiera dina tillägg med jQuerytdhftw
 
VT2018 - DA355A - Geolocation, Media, Package Manage
VT2018 - DA355A - Geolocation, Media, Package ManageVT2018 - DA355A - Geolocation, Media, Package Manage
VT2018 - DA355A - Geolocation, Media, Package ManageAnton Tibblin
 
VT2018 - DA355A - LocalStorage & Bootstrap
VT2018 - DA355A - LocalStorage & BootstrapVT2018 - DA355A - LocalStorage & Bootstrap
VT2018 - DA355A - LocalStorage & BootstrapAnton Tibblin
 
Alfresco administration stockholm meetup
Alfresco administration stockholm meetupAlfresco administration stockholm meetup
Alfresco administration stockholm meetupCarl Nordenfelt
 
HT16 - DA156A - Introduktion till JavaScript
HT16 - DA156A - Introduktion till JavaScriptHT16 - DA156A - Introduktion till JavaScript
HT16 - DA156A - Introduktion till JavaScriptAnton Tibblin
 
Anpassad kurs för Acudira AB
Anpassad kurs för Acudira ABAnpassad kurs för Acudira AB
Anpassad kurs för Acudira ABAntonio Riveras
 
Tre sårbarheter i webbappar
Tre sårbarheter i webbapparTre sårbarheter i webbappar
Tre sårbarheter i webbapparjohnwilander
 
Molntjänster - inte bara teknik
Molntjänster - inte bara teknikMolntjänster - inte bara teknik
Molntjänster - inte bara teknikPer Åström
 
HT19 - DA354A - Webbprogrammering med bottle
HT19 - DA354A - Webbprogrammering med bottleHT19 - DA354A - Webbprogrammering med bottle
HT19 - DA354A - Webbprogrammering med bottleAnton Tibblin
 
WPKAFE - Grunderna i WordPress
WPKAFE - Grunderna i WordPress WPKAFE - Grunderna i WordPress
WPKAFE - Grunderna i WordPress Bloggcoach
 
Tjejer Kodar 100 - Dag 4 - Django
Tjejer Kodar 100 - Dag 4 - DjangoTjejer Kodar 100 - Dag 4 - Django
Tjejer Kodar 100 - Dag 4 - DjangoEmil Stenström
 
Xpages för utvecklare
Xpages för utvecklareXpages för utvecklare
Xpages för utvecklareThomas Adrian
 

Ähnlich wie WP Meetup i Norrköping 2012-05-25 (20)

HT23 - DA354A - Webbprogrammering med Python
HT23 - DA354A - Webbprogrammering med PythonHT23 - DA354A - Webbprogrammering med Python
HT23 - DA354A - Webbprogrammering med Python
 
Using Microformats to aggregate data
Using Microformats to aggregate dataUsing Microformats to aggregate data
Using Microformats to aggregate data
 
HT17 - DA156A - Sammanfattning av kursen
HT17 - DA156A - Sammanfattning av kursenHT17 - DA156A - Sammanfattning av kursen
HT17 - DA156A - Sammanfattning av kursen
 
HT17 - DA354A - Webbapplikation
HT17 - DA354A - WebbapplikationHT17 - DA354A - Webbapplikation
HT17 - DA354A - Webbapplikation
 
HT18 - DA354A - Bottle web app
HT18 - DA354A - Bottle web appHT18 - DA354A - Bottle web app
HT18 - DA354A - Bottle web app
 
HT15, DA354A - Introduktion till Webbprogrammering - Bottle
HT15, DA354A - Introduktion till Webbprogrammering - BottleHT15, DA354A - Introduktion till Webbprogrammering - Bottle
HT15, DA354A - Introduktion till Webbprogrammering - Bottle
 
Lär dig ajaxifiera dina tillägg med jQuery
Lär dig ajaxifiera dina tillägg med jQueryLär dig ajaxifiera dina tillägg med jQuery
Lär dig ajaxifiera dina tillägg med jQuery
 
VT2018 - DA355A - Geolocation, Media, Package Manage
VT2018 - DA355A - Geolocation, Media, Package ManageVT2018 - DA355A - Geolocation, Media, Package Manage
VT2018 - DA355A - Geolocation, Media, Package Manage
 
VT2018 - DA355A - LocalStorage & Bootstrap
VT2018 - DA355A - LocalStorage & BootstrapVT2018 - DA355A - LocalStorage & Bootstrap
VT2018 - DA355A - LocalStorage & Bootstrap
 
Alfresco administration stockholm meetup
Alfresco administration stockholm meetupAlfresco administration stockholm meetup
Alfresco administration stockholm meetup
 
HT16 - DA156A - Introduktion till JavaScript
HT16 - DA156A - Introduktion till JavaScriptHT16 - DA156A - Introduktion till JavaScript
HT16 - DA156A - Introduktion till JavaScript
 
Anpassad kurs för Acudira AB
Anpassad kurs för Acudira ABAnpassad kurs för Acudira AB
Anpassad kurs för Acudira AB
 
Tre sårbarheter i webbappar
Tre sårbarheter i webbapparTre sårbarheter i webbappar
Tre sårbarheter i webbappar
 
Birdnotes
BirdnotesBirdnotes
Birdnotes
 
Molntjänster - inte bara teknik
Molntjänster - inte bara teknikMolntjänster - inte bara teknik
Molntjänster - inte bara teknik
 
HT19 - DA354A - Webbprogrammering med bottle
HT19 - DA354A - Webbprogrammering med bottleHT19 - DA354A - Webbprogrammering med bottle
HT19 - DA354A - Webbprogrammering med bottle
 
WPKAFE - Grunderna i WordPress
WPKAFE - Grunderna i WordPress WPKAFE - Grunderna i WordPress
WPKAFE - Grunderna i WordPress
 
13 cms ht14
13 cms ht1413 cms ht14
13 cms ht14
 
Tjejer Kodar 100 - Dag 4 - Django
Tjejer Kodar 100 - Dag 4 - DjangoTjejer Kodar 100 - Dag 4 - Django
Tjejer Kodar 100 - Dag 4 - Django
 
Xpages för utvecklare
Xpages för utvecklareXpages för utvecklare
Xpages för utvecklare
 

WP Meetup i Norrköping 2012-05-25

  • 1.
  • 2. Vincent Boiardt Technical Director, Oakwood @vincentboiardt http://boiardt.se http://oakwood.se http://wpquicktips.wordpress.com/ http://open.spotify.com/user/vinceb www.digster.se www.oakwood.se
  • 3. Om Digster •Varumärke skapat av Universal Music •Redaktionella spellistor skapade av Digsters redaktörer •Spellistor skapade av artister •Uppdaterade spellistor, t ex Digster HITS www.digster.se www.oakwood.se
  • 4. Om Digster •Lanserades december 2009 •Första version gjordes i Umbraco •Andra versionen gjordes i WordPress och lanserades mars 2011 www.digster.se www.oakwood.se
  • 5. Om Digster Posttyper och taxonomier WP Cron Mobilt WordPress-nätverk Egna komponenter Facebook Integration API Översättning www.digster.se www.oakwood.se
  • 6. Om Digster •WordPress-nätverk - WordPress Multisite, tidigare WPMU •Finns tillgängligt i 14 länder bland annat USA, England, Tyskland och Australien •185 000+ användare över hela världen www.digster.se www.oakwood.se
  • 7. Om Digster •Ett tema där all funktionalitet finns •Några få tillägg... •Domain Mapping, egna domäner för varje site •Widget Logic, möjliggör villkor för widgets •Mobile Smart, för att visa mobiltema för mobila enheter •Samt ett par egenutvecklade för att t ex sync:a e-postadresser med nyhetsbrevstjänst Mer information: http://wordpress.org/extend/plugins/wordpress-mu-domain-mapping/ http://wordpress.org/extend/plugins/widget-logic/ http://www.mobile-smart.co.uk/ www.digster.se www.oakwood.se
  • 8. www.digster.se www.oakwood.se
  • 9. www.digster.se www.oakwood.se
  • 10. Struktur •Post typer register_post_type( 'playlist' ); •Spellistor - playlist register_post_type( 'section' ); •Sektioner - section •Redaktörer - editor register_post_type( 'editor' ); register_taxonomy( 'genre' ); •Taxonomier register_taxonomy( 'suitable' ); •Genre - genre register_taxonomy( 'mood' ); •“Passar till” - suitable •Stämning - mood register_taxonomy( 'artist' ); •Artister - artist register_taxonomy( 'section-tax' ); •Sektion - section-tax Mer information: http://codex.wordpress.org/Function_Reference/register_post_type http://codex.wordpress.org/Function_Reference/register_taxonomy www.digster.se www.oakwood.se
  • 11. Sektioner - post type - section Spellistor - post type - playlist Redaktörer - post type - editor Passar till - taxonomy - Sidebar och widgets - suitable dynamic_sidebar() www.digster.se www.oakwood.se
  • 12. Omslag - the_post_thumbnail() Länkar - post meta - services Passar till - taxonomy - suitable Innehåll - the_content() Genre - taxonomy - genre Tid - post meta - duration Arister - taxonomy - artist Stäming - taxonomy - mood Låtlista - post meta - tracklist Kommentarer www.digster.se www.oakwood.se
  • 13. Administration för användare •Registrering och login •Användarinställningar www.digster.se www.oakwood.se
  • 14. Skapa egna komponenter - “Catch URI” •En funktion inspirerad function mytheme_catch_uri() { av BuddyPress http://example.com/user/vincent $uri = $_SERVER['REQUEST_URI']; •Bryter ner URI till en array $uri = str_replace( '?' . $_SERVER['QUERY_STRING'], '', $uri ); $uri = split( '/', $uri ); •Körs vid init Arrayarray_values( $uri = ( array_filter( $uri ) ); •Lätt att bygga komponenter [0] => 'user', if ( isset($uri[0]) ) { /register/ [1] => 'vincent' switch ($uri[0]) { case ‘user’: /login/ ) //Do stuff /settings/ } } /profile/ } add_action( 'init', 'mytheme_catch_uri', 5 ); Mer information: http://wpquicktips.wordpress.com/2011/03/29/simple-catch-uri-function/ www.digster.se www.oakwood.se
  • 15. Användarfunktioner •Facebook Integration •Användarprofil •Favoriter, notifierar användaren när en favorit uppdateras www.digster.se www.oakwood.se
  • 16. Facebook •Använder både Facebooks JavaScript- och PHP-ramverk •Loggar in frontend med JS SDK •Verifierar användaren backend med PHP SDK Logga in på FB/app JS SDK FB $user_id = $facebook->getUser(); Login/ Digster PHP SDK Register Mer information: Hitta användare med $user_id https://developers.facebook.com/docs/reference/php/facebook-api/ https://developers.facebook.com/docs/reference/javascript/ www.digster.se www.oakwood.se
  • 17. Annat smått och gott •Import av spellistdata från Spotify •Sync av samma data via WordPress egen cron-funktionalitet •Värvning/rekrytering www.digster.se www.oakwood.se
  • 18. WP Cron •Inte en riktig crontab, utan en “psuedo-cron” •Aktiveras av t ex en besökare •Aktiveras efter den schemalagda tiden •Intervaler som finns tillgänliga är hourly, daily och twicedaily •Gör egna intervaller! Hourly Daily •Spellistor-sync •Nyhetsbrev-sync Mer information: http://codex.wordpress.org/Function_Reference/wp_schedule_event www.digster.se www.oakwood.se
  • 19. Översättning •Använd funktionerna __() och _e() •Generera och översätt .po-filer med t ex Poedit •Digster översatt till 10 språk _e( ‘My translatable string’, ‘mytheme’ ); load_theme_textdomain( 'mytheme', TEMPLATEPATH . '/languages' ); Mer information: http://codex.wordpress.org/Translating_WordPress http://codex.wordpress.org/Function_Reference/load_textdomain http://codex.wordpress.org/Function_Reference/_e http://codex.wordpress.org/Function_Reference/_2 www.digster.se www.oakwood.se
  • 20. Mobiltema •Child-tema av orginaltemat •Plugin “Mobile Smart” laddar temat •Möjlighet att se desktop version Mer information: http://www.mobile-smart.co.uk/ www.digster.se www.oakwood.se
  • 21. iOS applikation •Utvecklades tillsammans med Appego •Baserades på en tidig version av API:t Mer information: http://itunes.apple.com/se/app/digster/id462752433?mt=8 www.digster.se www.oakwood.se
  • 22. API •Inspirerad av PHP-ramverket Simple-REST •Data i två format: JSON & XSPF (“spiff”, XML Shareable Playlist Format) <?xml version="1.0" encoding="UTF-8"?> { <playlist xmlns="http://xspf.org/ns/0/" version="1"> "status":"ok", <identifier>digster-hits</identifier> "playlist":{ <title>Digster HITS</title> "id":27, <creator>2</creator> "title":"Digster HITS", <annotation> "author":"2", Digster HITS √§r alltid laddad med alltid laddad med de bu00e4sta..." "description":"Digster HITS u00e4rde b√§sta... </annotation> ... ... } </playlist> } Mer information: Representational state transfer (REST) https://github.com/deepeshmalviya/simple-rest/ http://www.xspf.org/ www.digster.se www.oakwood.se
  • 23. Spotify App •Släpptes i mars 2012 •Använder sig av Digsters API •Spotify App API - HTML/CSS/JS •Enorm trafikökning Mer information: https://developer.spotify.com/technologies/apps/ www.digster.se www.oakwood.se