Etikett: URL

Finns det nåt tema i webbadressen?

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.

  1. dela upp adressen i delar
  2. kolla om sista delen matchar namnet på ett installerat tema
  3. 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

  1. Identifiera URL:en (/3880/twentyten)
  2. Hitta temat (twentyten)
  3. 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.

  1. Hur du skapar en WordPress plugin
  2. WordPress hooks
  3. Fånga URLen!
  4. Identifiera sidtyp
  5. Finns det nåt tema i webbadressen?

Identifiera sidtyp

För att visa en webbsida behöver datorsystemet veta vilken sida det gäller. Det kan vara ett inlägg, en kategori, författare eller något annat. Vore dumt att visa min blogg om framing när du klickat på en länk till en sida om Mexiko.

Poängen med en temaväxlare som styrs av webbadressen är att adressen kan ange

  • vilken sida vi är ute efter
  • hur vi vill att sidan ska se ut

Vi har hämtat webbsidans URL (webbadress) och det är dags att skilja de olika sidorna åt (inlägg, tagg…).

Logiken för att identifiera sidtyp använder inbyggda funktioner i WordPress.

if ( is_front_page() ) {

        error_log('Detta är förstasidan');

    } 

    elseif ( is_single() ) {

        error_log('Detta är ett enskilt inlägg');
        error_log('Post ID: ' . get_the_ID());

    }

    elseif ( is_page() ) {

        error_log('Detta är en sida');
        error_log('Page ID: ' . get_the_ID());

    }

    elseif ( is_category() ) {

        error_log('Detta är en kategorisida');
        error_log('Category: ' . single_cat_title('', false));

    }

    elseif ( is_tag() ) {

        error_log('Detta är en etikettssida');
        error_log('Tag: ' . single_tag_title('', false));

    }

    elseif ( is_author() ) {

        error_log('Detta är en författarsida');
        error_log('Author: ' . get_the_author());

    }

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.

  1. Hur du skapar en WordPress plugin
  2. WordPress hooks
  3. Fånga URLen!
  4. Identifiera sidtyp
  5. Finns det nåt tema i webbadressen?

Fånga URLen!

För att kunna ändra sajtens utseende med hjälp av sidans webbadress behöver vi

  • hämta webbadressen (URL:en)
  • innan sidan visas

Det gör vi med en funktion som

  • begär ut URL:en – $_SERVER[’REQUEST_URI’]
  • lägger den i en behållare – $current_url =

Så här ser funktionen ut tillsammans med en avslutande Action som sätter igång funktionen precis innan sidan laddas.

function check_url_for_theme() {
    $current_url = $_SERVER['REQUEST_URI'];
    error_log('Nuvarande URL: ' . $current_url);
}

add_action('init', 'check_url_for_theme');

På det sättet ser vi exakt vilken URL-struktur vi behöver hantera. Sen kan vi börja bygga logiken för att plocka ut temadelen ur URL:en.

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.

  1. Hur du skapar en WordPress plugin
  2. WordPress hooks
  3. Fånga URLen!
  4. Identifiera sidtyp
  5. Finns det nåt tema i webbadressen?