Svea Checkout Plugin
WordPress plugin that displays SVEA Checkout download statistics from WordPress.org.
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/jhnmlmstrm/svea-downloads/archive/refs/heads/main.zipEtt WordPress-plugin som visar totala antalet downloads för SVEA Checkout for WooCommerce.
Vad pluginet gör
Pluginet lägger till en widget i WordPress admin dashboard.
Widgeten visar hur många gånger SVEA Checkout for WooCommerce har laddats ner från WordPress.org.
Installation
- Lägg pluginet i
wp-content/plugins/. - Aktivera pluginet i WordPress admin.
- Gå till WordPress Dashboard.
- Widgeten för SVEA downloads visas där.
Hur pluginet är uppbyggt
Pluginet är uppdelat i olika delar där API-anrop och admin-funktionen är separerade.
API
Jag använder WordPress.org Plugin Statistics API för att hämta statistik över antal downloads.
Endpoint:
https://api.wordpress.org/stats/plugin/1.0/downloads.php
API-anropet använder pluginets slug:
svea-checkout-for-woocommerce
Jag använder parametern historical_summary=1 för att få tillbaka today, yesterday, last_week och all_time.
Det är värdet all_time som används av pluginet.
Parametern är inte dokumenterad i den officiella API-dokumentationen.
Jag hittade information om den här:
Klassen som hanterar kontakten med WordPress.org API är:
includes/class-svea-dwnlds-api.php
Klassen:
- Gör API-anropet.
- Kontrollerar errors och HTTP status.
- Läser JSON-svaret.
- Kontrollerar att
all_timefinns. - Returnerar download count som ett heltal.
Admin
admin/class-svea-dwnlds-admin.php
Den här klassen hanterar dashboard-widgeten.
Den hämtar download count från API-klassen och visar resultatet i WordPress admin.
Om API-anropet ger ett error visas felmeddelandet istället för download count.
Main plugin class
includes/class-svea-dwnlds.php
Den här klassen startar pluginet och kopplar ihop API-klassen med admin-klassen.
Error handling
Jag har separerat olika typer av fel.
Om WordPress.org inte går att nå returnerar wp_remote_get() ett WP_Error.
Om API:et svarar men ger en annan HTTP status än 200, returneras ett eget WP_Error.
Jag kontrollerar också att API-svaret innehåller all_time innan värdet används.
Caching
Download-statistiken cachas med WordPress Transient API i 1 timme.
Det gör att pluginet inte behöver göra ett nytt API-anrop varje gång dashboarden laddas. Istället används det cachade värdet så länge transienten är giltig.
När transienten har gått ut hämtas ny information från WordPress.org och det nya värdet sparas i cachen igen.
Cachens längd är satt till 1 timme med HOUR_IN_SECONDS.
Testing
Jag har testat bland annat:
- att ett normalt API-svar fungerar
- att ett ogiltigt API-svar hanteras
- att WordPress.org inte svarar
- att rätt download count visas
- att cache används när den finns
- att ett nytt API-anrop görs när cachen har gått ut
Development time
- Research + planering: 30 min
- Filer och foldrar: 5 min (baserat på en WordPress-plugin boilerplate)
class-svea-dwnlds-admin.php: 10 minclass-svea-dwnlds-api.php: 50 min- Testning: 45 min
- Dokumentation: 20 min
Totalt: 2 timmar och 40 minuter
Author
Johan Malmström