Caractères spéciaux / accents dans URL Wordpress


Heroes69
WRInaute discret
WRInaute discret
 
Messages: 173
Inscription: 23 Mar 2010

Caractères spéciaux / accents dans URL Wordpress

Message le Lun Juin 06, 2011 7:41

Bonjour à la communauté,

je viens vers vous pour vous demander de l'aide pour permettre les caractères avec accents dans les permalinks d'un wordpress.

-> oui je sais c'est pas bien pour le référencement, pas la peine de me le dire


J'ai cherché pas mal sur le net et j'ai rien trouvé même si google.com (en même temps les ricains n'ont pas d'accent)

Donc si quelqu'un connait une méthode, ou a l'adresse d'un tuto je suis preneur !

Merci


e-kiwi
Modérateur
Modérateur
 
Messages: 15617
Inscription: 23 Déc 2003

Re: Caractères spéciaux / accents dans URL Wordpress

Message le Lun Juin 06, 2011 7:46

Bonjour,
avant que l'on prenne du temps pour t'aider, peux tu nous expliquer pourquoi tu veux faire ça ?


Heroes69
WRInaute discret
WRInaute discret
 
Messages: 173
Inscription: 23 Mar 2010

Re: Caractères spéciaux / accents dans URL Wordpress

Message le Lun Juin 06, 2011 8:28

parce que j'ai envie, je trouve ca plus jolie les url courte avec les accents, merci de votre aide


Marie-Aude
Modérateur
Modérateur
 
Messages: 11872
Inscription: 5 Juin 2006

Re: Caractères spéciaux / accents dans URL Wordpress

Message le Lun Juin 06, 2011 9:37

A tes risques et périls (parce que "plus joli" ça vaut dire aussi pas mal de risques de problèmes liés à ton référencement) mais il va falloir que tu te fasses un hook à la mimine sur la routine de sanitization de l'url. Pour comprendre comment elle fonctionne regarde les plugins qui gère la translittération des umlauts dans les permalinks (cherche dans le repository umlaut + permalink ou german + permalink ou detusche permalink je ne sais plus)

Maintenant on te le dit "c'est une bêtise" après tu fais comme tu veux :)


Heroes69
WRInaute discret
WRInaute discret
 
Messages: 173
Inscription: 23 Mar 2010

Re: Caractères spéciaux / accents dans URL Wordpress

Message le Lun Juin 06, 2011 10:21

Merci Marie-Aude, je vais chercher sur cette piste la :D

si quelqu'un a d'autres piste ou aide ! :D


Heroes69
WRInaute discret
WRInaute discret
 
Messages: 173
Inscription: 23 Mar 2010

Re: Caractères spéciaux / accents dans URL Wordpress

Message le Lun Juin 06, 2011 19:46

J'ai installer les plugins Marie-Aude. Ca ne converti pas les accents dans l'url quand j'en met donc c'est pas mal mais quand je publie ou que je visualise le brouillon ca me met "Aucun résultat page non trouvé" une 404 .
Est ce qu'il y a quelque chose d'autre à faire ? au niveau du htaccess ya rien a changé je sais pas ? c'est bizarre car quand je clique sur le lien, ya bien l'url avec accent mais ca va sur une 404


Marie-Aude
Modérateur
Modérateur
 
Messages: 11872
Inscription: 5 Juin 2006

Re: Caractères spéciaux / accents dans URL Wordpress

Message le Lun Juin 06, 2011 19:53

Je ne t'ai pas dit de les installer, je t'ai dit de les regarder pour comprendre comment faire ce que tu veux faire ^^


Heroes69
WRInaute discret
WRInaute discret
 
Messages: 173
Inscription: 23 Mar 2010

Re: Caractères spéciaux / accents dans URL Wordpress

Message le Lun Juin 06, 2011 20:01

Ah ! ben en faite oui j'ai regardé le code des plugin mais j'ai rien compris :'-)
Code: Tout sélectionner
require('lib.php');
add_filter('sanitize_title', 'transliterate_aeoeuess', 5, 3);


lib.php :
Code: Tout sélectionner
function transliterate_aeoeuess($title, $raw_title = NULL, $context = 'query') {
    // Hacky hook due to hacky core, see
    // http://core.trac.wordpress.org/ticket/16905

    if ($raw_title != NULL) {
        $title = $raw_title; // undo remove_accents
    }

    $title = str_replace('Ä', 'ae', $title);
    $title = str_replace('ä', 'ae', $title);
    $title = str_replace('Ö', 'oe', $title);
    $title = str_replace('ö', 'oe', $title);
    $title = str_replace('Ü', 'ue', $title);
    $title = str_replace('ü', 'ue', $title);
    $title = str_replace('ẞ', 'ss', $title);
    $title = str_replace('ß', 'ss', $title);
    $title = str_replace('é', 'e', $title);
    $title = str_replace('ê', 'e', $title);
    $title = str_replace('É', 'Z', $title);
    $title = str_replace('è', 'e', $title);
    $title = str_replace('à', 'a', $title);
    $title = str_replace('Ê', 'e', $title);



    if ($context == 'save') {
        $title = remove_accents($title); // redo remove_accents
    }

    return $title;
}


Heroes69
WRInaute discret
WRInaute discret
 
Messages: 173
Inscription: 23 Mar 2010

Re: Caractères spéciaux / accents dans URL Wordpress

Message le Lun Juin 06, 2011 21:05

j'ai essayé pleins de chose et là je crois que j'ai tout planté ! mon wp ne marche plus :-/ j'ai des codes erreurs dans tout les sense ! à l'aide !


Marie-Aude
Modérateur
Modérateur
 
Messages: 11872
Inscription: 5 Juin 2006

Re: Caractères spéciaux / accents dans URL Wordpress

Message le Lun Juin 06, 2011 21:50

add_filter('sanitize_title', 'transliterate_aeoeuess', 5, 3);

En gros c'est simple, ici tu as le hook de wordpress sur lequel tu dois agir "sanitize_title'

Tu vas voir dans le core de wordpress comment ils font, et tu fais comme le monsieur une petite routine pour "ne pas remplacer" les caractères accentués (donc en gros pour remplacer les caractères accentués par eux mêmes, ou alors pour leur équivalent comme dans Wikipedia)

Après il faut voir ce que ça donne :
- dans les différentes fonctions utilisant les permaliens
- dans le flux rss
- dans la gestion des urls des commentaires.


Heroes69
WRInaute discret
WRInaute discret
 
Messages: 173
Inscription: 23 Mar 2010

Re: Caractères spéciaux / accents dans URL Wordpress

Message le Lun Juin 06, 2011 21:55

Ok oui on veut faire comme wikipedia pour les url

on a pas de flux rss et on a pas de commentaire non plus donc ca simplifie beaucoup de chose, je vais regarder tout ça !
Merci Marie-Aude :)


Heroes69
WRInaute discret
WRInaute discret
 
Messages: 173
Inscription: 23 Mar 2010

Re: Caractères spéciaux / accents dans URL Wordpress

Message le Lun Juin 06, 2011 22:04

Je pense que tout vient de là dans include/formatting.php
Code: Tout sélectionner
if (seems_utf8($string)) {
      $chars = array(
      // Decompositions for Latin-1 Supplement
      chr(195).chr(128) => 'A', chr(195).chr(129) => 'A',
      chr(195).chr(130) => 'A', chr(195).chr(131) => 'A',
      chr(195).chr(132) => 'A', chr(195).chr(133) => 'A',
      chr(195).chr(134) => 'AE',chr(195).chr(135) => 'C',
      chr(195).chr(136) => 'E', chr(195).chr(137) => 'E',
      chr(195).chr(138) => 'E', chr(195).chr(139) => 'E',
      chr(195).chr(140) => 'I', chr(195).chr(141) => 'I',
      chr(195).chr(142) => 'I', chr(195).chr(143) => 'I',
      chr(195).chr(144) => 'D', chr(195).chr(145) => 'N',
      chr(195).chr(146) => 'O', chr(195).chr(147) => 'O',
      chr(195).chr(148) => 'O', chr(195).chr(149) => 'O',
      chr(195).chr(150) => 'O', chr(195).chr(153) => 'U',
      chr(195).chr(154) => 'U', chr(195).chr(155) => 'U',
      chr(195).chr(156) => 'U', chr(195).chr(157) => 'Y',
      chr(195).chr(158) => 'TH',chr(195).chr(159) => 's',
      chr(195).chr(160) => 'a', chr(195).chr(161) => 'a',
      chr(195).chr(162) => 'a', chr(195).chr(163) => 'a',
      chr(195).chr(164) => 'a', chr(195).chr(165) => 'a',
      chr(195).chr(166) => 'ae',chr(195).chr(167) => 'c',
      chr(195).chr(168) => 'e', chr(195).chr(169) => 'e',
      chr(195).chr(170) => 'e', chr(195).chr(171) => 'e',
      chr(195).chr(172) => 'i', chr(195).chr(173) => 'i',
      chr(195).chr(174) => 'i', chr(195).chr(175) => 'i',
      chr(195).chr(176) => 'd', chr(195).chr(177) => 'n',
      chr(195).chr(178) => 'o', chr(195).chr(179) => 'o',
      chr(195).chr(180) => 'o', chr(195).chr(181) => 'o',
      chr(195).chr(182) => 'o', chr(195).chr(182) => 'o',
      chr(195).chr(185) => 'u', chr(195).chr(186) => 'u',
      chr(195).chr(187) => 'u', chr(195).chr(188) => 'u',
      chr(195).chr(189) => 'y', chr(195).chr(190) => 'th',
      chr(195).chr(191) => 'y',
      // Decompositions for Latin Extended-A
      chr(196).chr(128) => 'A', chr(196).chr(129) => 'a',
      chr(196).chr(130) => 'A', chr(196).chr(131) => 'a',
      chr(196).chr(132) => 'A', chr(196).chr(133) => 'a',
      chr(196).chr(134) => 'C', chr(196).chr(135) => 'c',
      chr(196).chr(136) => 'C', chr(196).chr(137) => 'c',
      chr(196).chr(138) => 'C', chr(196).chr(139) => 'c',
      chr(196).chr(140) => 'C', chr(196).chr(141) => 'c',
      chr(196).chr(142) => 'D', chr(196).chr(143) => 'd',
      chr(196).chr(144) => 'D', chr(196).chr(145) => 'd',
      chr(196).chr(146) => 'E', chr(196).chr(147) => 'e',
      chr(196).chr(148) => 'E', chr(196).chr(149) => 'e',
      chr(196).chr(150) => 'E', chr(196).chr(151) => 'e',
      chr(196).chr(152) => 'E', chr(196).chr(153) => 'e',
      chr(196).chr(154) => 'E', chr(196).chr(155) => 'e',
      chr(196).chr(156) => 'G', chr(196).chr(157) => 'g',
      chr(196).chr(158) => 'G', chr(196).chr(159) => 'g',
      chr(196).chr(160) => 'G', chr(196).chr(161) => 'g',
      chr(196).chr(162) => 'G', chr(196).chr(163) => 'g',
      chr(196).chr(164) => 'H', chr(196).chr(165) => 'h',
      chr(196).chr(166) => 'H', chr(196).chr(167) => 'h',
      chr(196).chr(168) => 'I', chr(196).chr(169) => 'i',
      chr(196).chr(170) => 'I', chr(196).chr(171) => 'i',
      chr(196).chr(172) => 'I', chr(196).chr(173) => 'i',
      chr(196).chr(174) => 'I', chr(196).chr(175) => 'i',
      chr(196).chr(176) => 'I', chr(196).chr(177) => 'i',
      chr(196).chr(178) => 'IJ',chr(196).chr(179) => 'ij',
      chr(196).chr(180) => 'J', chr(196).chr(181) => 'j',
      chr(196).chr(182) => 'K', chr(196).chr(183) => 'k',
      chr(196).chr(184) => 'k', chr(196).chr(185) => 'L',
      chr(196).chr(186) => 'l', chr(196).chr(187) => 'L',
      chr(196).chr(188) => 'l', chr(196).chr(189) => 'L',
      chr(196).chr(190) => 'l', chr(196).chr(191) => 'L',
      chr(197).chr(128) => 'l', chr(197).chr(129) => 'L',
      chr(197).chr(130) => 'l', chr(197).chr(131) => 'N',
      chr(197).chr(132) => 'n', chr(197).chr(133) => 'N',
      chr(197).chr(134) => 'n', chr(197).chr(135) => 'N',
      chr(197).chr(136) => 'n', chr(197).chr(137) => 'N',
      chr(197).chr(138) => 'n', chr(197).chr(139) => 'N',
      chr(197).chr(140) => 'O', chr(197).chr(141) => 'o',
      chr(197).chr(142) => 'O', chr(197).chr(143) => 'o',
      chr(197).chr(144) => 'O', chr(197).chr(145) => 'o',
      chr(197).chr(146) => 'OE',chr(197).chr(147) => 'oe',
      chr(197).chr(148) => 'R',chr(197).chr(149) => 'r',
      chr(197).chr(150) => 'R',chr(197).chr(151) => 'r',
      chr(197).chr(152) => 'R',chr(197).chr(153) => 'r',
      chr(197).chr(154) => 'S',chr(197).chr(155) => 's',
      chr(197).chr(156) => 'S',chr(197).chr(157) => 's',
      chr(197).chr(158) => 'S',chr(197).chr(159) => 's',
      chr(197).chr(160) => 'S', chr(197).chr(161) => 's',
      chr(197).chr(162) => 'T', chr(197).chr(163) => 't',
      chr(197).chr(164) => 'T', chr(197).chr(165) => 't',
      chr(197).chr(166) => 'T', chr(197).chr(167) => 't',
      chr(197).chr(168) => 'U', chr(197).chr(169) => 'u',
      chr(197).chr(170) => 'U', chr(197).chr(171) => 'u',
      chr(197).chr(172) => 'U', chr(197).chr(173) => 'u',
      chr(197).chr(174) => 'U', chr(197).chr(175) => 'u',
      chr(197).chr(176) => 'U', chr(197).chr(177) => 'u',
      chr(197).chr(178) => 'U', chr(197).chr(179) => 'u',
      chr(197).chr(180) => 'W', chr(197).chr(181) => 'w',
      chr(197).chr(182) => 'Y', chr(197).chr(183) => 'y',
      chr(197).chr(184) => 'Y', chr(197).chr(185) => 'Z',
      chr(197).chr(186) => 'z', chr(197).chr(187) => 'Z',
      chr(197).chr(188) => 'z', chr(197).chr(189) => 'Z',
      chr(197).chr(190) => 'z', chr(197).chr(191) => 's',
      // Decompositions for Latin Extended-B
      chr(200).chr(152) => 'S', chr(200).chr(153) => 's',
      chr(200).chr(154) => 'T', chr(200).chr(155) => 't',
      // Euro Sign
      chr(226).chr(130).chr(172) => 'E',
      // GBP (Pound) Sign
      chr(194).chr(163) => '');

      $string = strtr($string, $chars);
   } else {
      // Assume ISO-8859-1 if not UTF-8
      $chars['in'] = chr(128).chr(131).chr(138).chr(142).chr(154).chr(158)
         .chr(159).chr(162).chr(165).chr(181).chr(192).chr(193).chr(194)
         .chr(195).chr(196).chr(197).chr(199).chr(200).chr(201).chr(202)
         .chr(203).chr(204).chr(205).chr(206).chr(207).chr(209).chr(210)
         .chr(211).chr(212).chr(213).chr(214).chr(216).chr(217).chr(218)
         .chr(219).chr(220).chr(221).chr(224).chr(225).chr(226).chr(227)
         .chr(228).chr(229).chr(231).chr(232).chr(233).chr(234).chr(235)
         .chr(236).chr(237).chr(238).chr(239).chr(241).chr(242).chr(243)
         .chr(244).chr(245).chr(246).chr(248).chr(249).chr(250).chr(251)
         .chr(252).chr(253).chr(255);

      $chars['out'] = "EfSZszYcYuAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy";

      $string = strtr($string, $chars['in'], $chars['out']);
      $double_chars['in'] = array(chr(140), chr(156), chr(198), chr(208), chr(222), chr(223), chr(230), chr(240), chr(254));
      $double_chars['out'] = array('OE', 'oe', 'AE', 'DH', 'TH', 'ss', 'ae', 'dh', 'th');
      $string = str_replace($double_chars['in'], $double_chars['out'], $string);



j'ai peur de touché à ça c'est quoi les chr ?


Marie-Aude
Modérateur
Modérateur
 
Messages: 11872
Inscription: 5 Juin 2006

Re: Caractères spéciaux / accents dans URL Wordpress

Message le Lun Juin 06, 2011 22:11

fonction php, chr (ça doit être le caractère correspondant au code ascii)

"vous n'avez pas de flux" ... vous avez fait comment vous les avez désactivé ?
et ça c'est quoi
-http://www.espace-musculation.com/feed/ ? :D

ohhhh un flux standard de wordpress :)


Heroes69
WRInaute discret
WRInaute discret
 
Messages: 173
Inscription: 23 Mar 2010

Re: Caractères spéciaux / accents dans URL Wordpress

Message le Lun Juin 06, 2011 22:27

j'ai fais quelque modifs, quand je prévisualisé un brouillon avec des accents ca m'affiche la bonne url avec les accents et ça fait comme si ça marchais mais quand je publie ya de nouveau l'erreur 404

edit : a oui un flux ?? gloups


Marie-Aude
Modérateur
Modérateur
 
Messages: 11872
Inscription: 5 Juin 2006

Re: Caractères spéciaux / accents dans URL Wordpress

Message le Lun Juin 06, 2011 22:43

:D oui, et puis tu as un flux par catégorie, un flux des commentaires en général, un flux des commentaires par article, un flux par auteur...

(chuis sympa, je suis allée le voir sur Safari, sans Google Bar)

La suite en MP ^^

Bon blague à part, désactive WP cache, il ne doit pas aimer tout ça
Et tronque tes articles dans ton flux rss, ça t'évitera de te les faire pomper ^^

Caractères spéciaux / accents dans URL Wordpress

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité