Äntligen SEF:ar med å,ä och ö i WP!

19 oktober, 2010
By

wp-slug med å ä och öDå jag vill ha mina SEF:ar med å ä och ö så var jag inne och fulhackade lite i koden.

Detta skulle jag inte rekommendera någon att göra, det är ett snabbhack och inte direkt genomtänkt, men jag vill ha dom här SEF:arna nu och därför gör jag det, får ta och titta på vad koden gör lite mer ordentligt senare.

VARNING, dessa förändringar kan försvinna vid nästa uppdatering, jag skulle uppskatta att någon som kan göra WP plug-ins kunde titta på detta, men nu vet vi vart vi skall börja i alla fall.

Nu har jag inte kollat så ordentligt, men det verkade som att överallt där slug och title hanterades, anroppade dom funktionen sanitize_title($string) som enligt dokumentationen bara skall strippa bort php och html tecken från titeln, och om detta inte fungerar skall den returnera en default title, om den är satt.

I denna funktion hittade jag denna rad :

$title = apply_filters(‘sanitize_title’, $title, $raw_title);

Den anropar en annan funktion i WP som heter ”apply_filters”, ”apply_filters” kör olika filter som är globalt deklarerade i en array, verkar det som, som markeras med en tag, ettikett, i detta fall ‘sanitize_title’.

Nu har jag inte tiden att leta upp vart det filtret deklareras, men jag hade turen men mig och hittade en funktion rakt nedanför med namnet:

sanitize_title_with_dashes($title)

Jag har inte hitta några anrop till denna funktion än men den verkar i stort sett göra det jag vill, förutom en liten detalj där den aropar en anna funktion som skall ta bort alla accenter från titeln/URL:en

Så jag bytte helt enkelt ut  $title = apply_filters(‘sanitize_title’, $title, $raw_title);  med $title = sanitize_title_with_dashes($title); och kommenterade bort raden $title = remove_accents($title);  i sanitize_title_with_dashes($title).

Nu vet jag inte vilka andra sidoeffekter detta kan få och jag rekommenderar ingen att göra på detta sätt.

den korrekta lösningen på detta problem bör vara att leta reda på vart filtret ‘sanitize_title’ deklareras och skriva ett plug in som byer ut den här ettiketten.

men som sagt var, jag hinner inte, men jag hoppas att detta kan leda en wp pug in författare på rätt spår.

Inkommande sökningar:

Tags: ,

  • http://dwall.in David V. Wallin

    Problematiken med att slänga in åäö i SEF just nu är väl att alla webbläsare inte stödjer åäö ännu (t.ex IE6 som tyvärr inte är borta ännu). Detta skulle innebära att en sida innehållande åäö i sina URI’s skulle tappa användare.

    • http://www.cristian-herrera.se Cristian Herrera

      det kan stämma.
      Det som systemet spottar ur sig nu är den URL kodade motvarigheten till dessa tecken, vilket även IE6 skall stödja.
      Förutom det så bör vi inte stoppa hela utvecklingen bara för en webbläsare som borde ha gått i graven för länge sedan.
      ”Best practice” skulle jag säga vara att använda de URL enkodade motsvarigheterne till internationella tecknen men samtidigt 301:a en omskrien variant.
      t.ex /lada.html -> /låda.html
      om du tittar på min förra blogpost så tar jag upp just detta.

  • http://dwall.in David V. Wallin

    Dessutom är det ju så att sanitize_url() är depricated från wordpress 3.0.

    Deprecate sanitize_url() and clean_url() in favor of esc_url_raw() and esc_url() (ref. Development Updates)

    • http://www.cristian-herrera.se Cristian Herrera

      Kanske är det så, men det används fortfarande av ”core” systemet, tack för att du pekar på just detta.
      Jag har gått igenom WP – koden och databasstrukturen och har hittat massor som egentligen skulle behöva designas om, men det tar vi en annan dag.

  • http://dwall.in David V. Wallin

    Som jag skrev i ett blogginlägg för en tid sedan så släpptes WP 3.0 för tidigt. Det finns tonvis med buggar (även i 3.0.1) som är ganska allvarliga och som borde fixas för att WP ska kunna vara ett vettigt alternativ till andra befintliga system.

    • http://www.cristian-herrera.se Cristian Herrera

      Du anar inte vilka buggar det finns, jag har gått igenom stora delar om hur WP sparar data i sin databas, det finns en del att gå igenom.
      men jag hade tänkt ta det i en annan bloggpost, i mån av tid ;-)

  • Pingback: Få å ä ö i URL:n i WordPress

Translation (automatic by Transpooch) | (Transladado automaticamente por Transpoosh)

by Transposh - google translate and bing translate plugin for wordpress

Cristian Herrera på Facebook