Ibland kanske webbsurfaren bara gått till samio.se och då behövs ju inget knasigt tematrixande. Men för en webbadress som
https://samio.se/123/twentyfifteen
behöver vi lista ut om en del av adressen är ett tema.
Hur tar datorn reda på om det finns ett tema i webbadressen
Som vanligt är metoden -> dela upp problemet i mindre delar. Koden behöver göra tre saker.
- dela upp adressen i delar
- kolla om sista delen matchar namnet på ett installerat tema
- logga om ett tema hittades
function check_url_for_theme() {
$current_url = $_SERVER['REQUEST_URI'];
error_log('Nuvarande URL: ' . $current_url);
// Dela upp URL:en i delar
$url_parts = explode('/', trim($current_url, '/'));
// Sista delen av URL:en kan vara temanamnet
$possible_theme = end($url_parts);
// Hämta alla tillgängliga teman
$available_themes = wp_get_themes();
// Kontrollera om sista delen matchar ett tema
if (isset($available_themes[$possible_theme])) {
error_log('Hittade tema: ' . $possible_theme);
// TODO: Implementera tema-byte här
}
Efter att ha lagt in denna kod surfade jag till https://samio.se/3880/twentyten och fick tillbaka ”Hoppsan! Den sidan kan inte hittas.” men i loggen ser det bättre ut 🙂
[31-Dec-2024 19:39:40 UTC] Nuvarande URL: /
[31-Dec-2024 19:39:40 UTC] Detta är förstasidan
[31-Dec-2024 19:39:43 UTC] Nuvarande URL: /3880
[31-Dec-2024 19:39:43 UTC] Detta är ett enskilt inlägg
[31-Dec-2024 19:39:43 UTC] Post ID: 3880
[31-Dec-2024 19:39:50 UTC] Nuvarande URL: /3880/twentyten
[31-Dec-2024 19:39:50 UTC] Hittade tema: twentyten
Koden fungerar för att
- Identifiera URL:en (/3880/twentyten)
- Hitta temat (twentyten)
- Identifiera sidtypen (enskilt inlägg med ID 3880)
Så nu har användaren berättat allt vi behöver veta.
Problemet är att WordPress tolkar /3880/twentyten
som en försök att nå en undersida till inlägget, vilket inte existerar.
Dags att lura WordPress!
Källor
Vad är detta
Här beskriver jag bygget av en plugin till WordPress. Exemplet ger dig möjlighet att byta utseende på en webbsida.
- Hur du skapar en WordPress plugin
- WordPress hooks
- Fånga URLen!
- Identifiera sidtyp
- Finns det nåt tema i webbadressen?