Automatisk rettelse af æøå i permalinks

Opdatering, Jeg benyttede tidligere nedenstående til at rette WordPress permalink struktur – så æøå blev omskrevet til ae oe aa. Men jeg har udviddet løsningen, så man nu også kan benytte æøå og altså ikke behøver at benytte den her beskrevne teknik.

Se wk-cleaner-et-plugin-der-fikser-lidt-af-hvert i stedet!

Jeg benytter følgende kode i min functions.php, for automatisk tilrettelse af æøå / ÆØÅ til gammeldavs ae oe aa:

<?php
// ----   SLUG Permalink æøå   --- //
// kode nappet fra Transliterado (frit oversat fra esperanto):
$translate_language = array(
	'da' => array(
		'NOMO' => 'Dansk, Norsk',
		'da_aeoeaa' => 'æ, ø, å → ae, oe, aa'
	)
);
$translate_system = array();
function sanitize_title_dk($title)
{
	global $translate_language, $translate_system;
	if (!mb_check_encoding($title, 'ASCII'))
    {
      $title=utf8_decode($title);
      foreach (array_keys($translate_language) as $language)
        {
		  $choise = 'da';
          switch ($choise)
          {
            case 'da':
    		$translate_system[] = array
            (
    		  "Æ"=>"ae","Ø"=>"oe","Å"=>"aa","æ"=>"ae","ø"=>"oe","å"=>"aa"
    		);
          }
		}
	  foreach ($translate_system as $system)
      {
	  	$title = strtr($title, $system);
	  }
	}
	return $title;
};
add_filter('sanitize_title', 'sanitize_title_dk', 0);
// ----   SLUG Permalink æøå   END //

Koden er nappet fra et plugin "transliterado" som igen har forfinet tidligere plugins.

2 Responses to Automatisk rettelse af æøå i permalinks

  1. Vayu Robins siger:

    Hej.

    Jeg har netop i dag sidet og rodet med dette problem, så herligt at du har fundet en løsning og tak for du deler den. :-)

    Jeg er ikke ekspert i php eller WordPress, men jeg prøvede bare for sjovt at lave det lidt simplere.

    Du må meget gerne komme med feedback, hvis du mener det jeg har lavet er har en masse fejl.

    function sanitize_title_dk($dk_slug)
    {

    $patterns = array(‘/æ/’,'/ø/’,'/å/’,'/Æ/’,'/Ø/’,'/Å/’);
    $replacements = array(‘ae’,'oe’,'aa’,'ae’,'oe’,'aa’);
    $dk_slug = preg_replace($patterns, $replacements, $dk_slug);

    return $dk_slug;

    };
    add_filter(‘sanitize_title’, ‘sanitize_title_dk’, 0);

    Med venlig hilsen
    Vayu Robins

  2. admin siger:

    Hej Vayu, ja det ser godt ud det du har skrevet.
    Læg dog mærke til det ASCII check som Transliterado har med.

    Følgende er den version jeg selv benytter pt:

    
    $translate_language = 'da';
    $translate_system = array();
    function sanitize_title_dk($title)
    {
    	global $translate_language, $translate_system;
    	if (!mb_check_encoding($title, 'ASCII'))
        {
          //$title = utf8_decode($title);
          $translate_system[] = array (
    "æ" => "ae", "ø" => "oe", "å" => "aa", "Æ" => "ae", "Ø" => "oe", "Å" => "aa"
    );
    	  foreach ($translate_system as $system)
          {
    	  	$title = strtr($title, $system);
    	  };
    	};
    	return $title;
    };
    add_filter('sanitize_title', 'sanitize_title_dk', 0);
    

Skriv et svar

Din e-mail-adresse vil ikke blive offentliggjort. Krævede felter er markeret med *

*

Disse HTML koder og attributter er tilladte: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>