Caractères spéciaux / accents dans URL Wordpress

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Heroes69, 6 Juin 2011.

  1. Heroes69
    Heroes69 WRInaute discret
    Inscrit:
    23 Mars 2010
    Messages:
    211
    J'aime reçus:
    0
    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
     
  2. e-kiwi
    e-kiwi WRInaute accro
    Inscrit:
    23 Décembre 2003
    Messages:
    13 257
    J'aime reçus:
    1
    Bonjour,
    avant que l'on prenne du temps pour t'aider, peux tu nous expliquer pourquoi tu veux faire ça ?
     
  3. Heroes69
    Heroes69 WRInaute discret
    Inscrit:
    23 Mars 2010
    Messages:
    211
    J'aime reçus:
    0
    parce que j'ai envie, je trouve ca plus jolie les url courte avec les accents, merci de votre aide
     
  4. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 457
    J'aime reçus:
    31
    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 :)
     
  5. Heroes69
    Heroes69 WRInaute discret
    Inscrit:
    23 Mars 2010
    Messages:
    211
    J'aime reçus:
    0
    Merci Marie-Aude, je vais chercher sur cette piste la :D

    si quelqu'un a d'autres piste ou aide ! :D
     
  6. Heroes69
    Heroes69 WRInaute discret
    Inscrit:
    23 Mars 2010
    Messages:
    211
    J'aime reçus:
    0
    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
     
  7. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 457
    J'aime reçus:
    31
    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 ^^
     
  8. Heroes69
    Heroes69 WRInaute discret
    Inscrit:
    23 Mars 2010
    Messages:
    211
    J'aime reçus:
    0
    Ah ! ben en faite oui j'ai regardé le code des plugin mais j'ai rien compris :'-)
    Code:
    require('lib.php');
    add_filter('sanitize_title', 'transliterate_aeoeuess', 5, 3);
    lib.php :
    Code:
    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;
    }
     
  9. Heroes69
    Heroes69 WRInaute discret
    Inscrit:
    23 Mars 2010
    Messages:
    211
    J'aime reçus:
    0
    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 !
     
  10. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 457
    J'aime reçus:
    31
    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.
     
  11. Heroes69
    Heroes69 WRInaute discret
    Inscrit:
    23 Mars 2010
    Messages:
    211
    J'aime reçus:
    0
    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 :)
     
  12. Heroes69
    Heroes69 WRInaute discret
    Inscrit:
    23 Mars 2010
    Messages:
    211
    J'aime reçus:
    0
    Je pense que tout vient de là dans include/formatting.php
    Code:
    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 ?
     
  13. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 457
    J'aime reçus:
    31
    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 :)
     
  14. Heroes69
    Heroes69 WRInaute discret
    Inscrit:
    23 Mars 2010
    Messages:
    211
    J'aime reçus:
    0
    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
     
  15. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 457
    J'aime reçus:
    31
    :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 ^^
     
  16. Heroes69
    Heroes69 WRInaute discret
    Inscrit:
    23 Mars 2010
    Messages:
    211
    J'aime reçus:
    0
    tronquer le rss :D faut que je fasse ça aussi ^^
     
  17. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 457
    J'aime reçus:
    31
    ça c'est facile, c'est dans les options
     
  18. Heroes69
    Heroes69 WRInaute discret
    Inscrit:
    23 Mars 2010
    Messages:
    211
    J'aime reçus:
    0
    :D merci beaucoup
     
Chargement...
Similar Threads - Caractères spéciaux accents Forum Date
Dans les URL, évitez les accents, caractères spéciaux et majuscules Débuter en référencement 28 Mars 2012
caractères spéciaux dans le Htaccess! Problèmes de référencement spécifiques à vos sites 17 Décembre 2019
Résolu caractères spéciaux ajoutés en début de balise Débuter en référencement 18 Septembre 2018
Balise titre, caractères spéciaux Débuter en référencement 1 Août 2017
Les caractères spéciaux ☺ dans les titres Débuter en référencement 10 Juillet 2017
RedirectPermanent et caractères spéciaux URL Rewriting et .htaccess 28 Avril 2016
Caractères spéciaux Analytics Google Analytics 17 Février 2015
Caractères spéciaux dans les URL & Wordpress Débuter en référencement 18 Novembre 2014
Caractères spéciaux IMPRESSIONNANT dans les résultats SEO Référencement Google 28 Avril 2014
Caractères spéciaux sur mon site Développement d'un site Web ou d'une appli mobile 9 Septembre 2013