v 24 & 25 – Övning ”My Portfolio”

Uppgift: Skapa en portfölj-plugin

Du ska bygga en portfölj-plugin som med hjälp av sin egen URL och post type visar användare alla ”items” i en författares portfölj.

Customer Stories

  • Som en admin vill jag kunna skapa portfölj ”items” som berättar om ett specifikt projekt jag har gjort
  • Som en admin vill jag kunna ändra URL:en som min portfölj finns på via ett adminformulär.
  • Som en användare vill jag kunna se alla ”items” in författarens portfölj
  • Som en användare vill jag kunna se ett detaljvy för ett projekt (”item”) som snyggt visar upp all information som tillhör projektet.
  • Som en författare vill jag kunna skapa en widget som länkar till min portföljsida så att besökare lätt kan hitta den.

Föreslagen process/strategi

Fas 1

Utgå från denna kodbas för din plugin
1. Skapa en ny plugin som har sitt eget PHP namespace
2. Skapa en klass ”Registration” som använder activate/uninstall HOOKs för att flusha WordPress rewrite_rules.
3. Skapa en klass ”Router” som använder add_action(’init’) för att lägga till en egen rewrite_endpoint (deklarera en egen route). Glöm inte att se till att din query variabel har ett värde även när användare besöker din route utan ett ID (använd add_filter(’request’)).
4. I klassen ”Router”, använd add_filter(’template_include’) för att ändra vilken template WordPress använder om en användare besöker en custom route.
5. Skapa en template fil för en custom route som använder get_header() och get_footer() för att visa upp en sida i nuvarande aktivt tema för sajten.
6. I klassen ”Router”, använd add_filter(’wp_title’) för att ändra sidtiteln WordPress visar på en custom route.

Här kan du ladda ner ett kodexempel

Fas 2

Utgå från denna kodbas för din plugin
1. Skapa en ny klass ”CustomPost” som använder add_action(’init’) för att registrera en ny custom post type.
3. I klassen ”CustomPost”, använd add_action(’admin_init’) samt add_action(’save_post’) för att lägga till en meta box på dina custom posts (add_meta_box()). Din meta box ska ha alla metoder som behövs för att rendera den, samt spara värden som användare skriver in till databas med update_post_meta().
4. I klassen ”Register”, skapa en MySQL view som selectar alla post i posts tabellen som är av din custom type.
5. Skapa en ny klass ”Model” som extendar ”CustomPost” och hämtar ett eller alla custom posts med get_post() och MySQL frågor. Använd den MySQL view som pluginnen skapat för att hitta alla custom post IDn när det behövs.

Här kan du ladda ner ett kodexempel

Fas 3

Utgå från denna kodbas för din plugin
1. Ge din ”Model” klass en render metod som kallar på setup_postdata() och inkluderar en template för var post i modellen. Modellens template ska kunna använda WordPress template funktioner såsom the_content(), the_title(), etc. för att bygga HTML för en post.
2. I din ”Router” klass, vidareutvecka ditt template_include filter så att den, med hjälp av din ”Model”, kan hämta alla posts som ska visas och lagrar dem i en egenskap på ”Router” klassen.
3. Gör din ”Router” klass instans tillgänglig till din portföljs template fil via en variabel.
4. Ge din ”Router” klass en ny metod som kan rendera alla posts för en sida. Använd ”Model” klassens render metod för att skapa all HTML (”Router” ska med andra ord inte skapa HTML).

Här kan du ladda ner ett kodexempel

Fas 4

Utgå från denna kodbas för din plugin
1. Skapa en ny klass ”AdminOptions”, som med hjälp av is_admin() kollar om en användare är en administratör i sin konstruktor.
2. I din ”AdminOptions” klass, om en användare är admin, använd add_action(’admin_menu’) för att registrera din ”options page” med add_options_page() funktionen.
3. I din ”AdminOptions” klass, skapa en renderings metod som skriver ut HTML för ditt ”options page” formulär.
4. Använd add_action(’admin_init’) för att registrera options för din plugin med hjälp register_setting(). Använd sedan add_settings_section() och add_settings_field() för att registrera input fält för din option.
5. När du kan spara dina options via ditt nya formulär, använd dem på ett lämpligt sätt i din plugin. Till exempel, om du har skapat en inställning för ”Page title”, kan du använda den i din router för att ändra wp_title beroende på vad inställningens nuvarande värde är.

Här kan du ladda ner ett kodexempel

Fas 5

Utgå från denna kodbas för din plugin
1. Använd register_activation_hook för att skapa en ny capability som endast admins har. Använd WordPress add_cap() metod för att åstadkomma detta.
2. Ändra så att din ”AdminOptions” klass endast skapar sin options sida om en användare har din custom capability. Använd current_user_can() för att kontrollera en användares capability.
3. Använd register_uninstall_hook för att ta bort din capability för admins. Använd WordPress remove_cap() metod för att åstadkomma detta.

Här kan du ladda ner ett kodexempel

Fas 6

Utgå från denna kodbas för din plugin
1. Skapa en ”Widget” class som extendar WordPress ”Wp_Widget”. Anropa parent::__construct() i din klass konstruktor och skicka in de parametrar som behövs (widget ID, widget namn, widget beskrivning).
2. Använd add_action(’widgets_init’) för att registrera din widget med register_widget() funktionen.
3. I din ”Widget” klass, skapa metoden widget() som ekar ut allt innehåll din widget ska visa upp.
4. I din ”Widget” klass, skapa metoden form() som ekar ut det formulär användare ska använda för att skapa nya widgets i wp-admin.
5. I din ”Widget” klass, skapa metoden update() som ”tvättar” (sanitizes) den data en användare skickar in när de skapar/uppdaterar en widget.

Här kan du ladda ner ett kodexempel

0 votes