web-dev-qa-db-fra.com

Comment puis-je créer des permaliens Majuscules (majuscules)?

Comment puis-je faire un lien comme ça?

http://www.lifecellskin.us/Dev/About

la partie "Using_Permalinks", A est en majuscule. Mais WP convertit automatiquement les majuscules en minuscules.

J'essaie de convertir un ancien site créé uniquement par HTML en un site de plate-forme WP. Quelques liens vers le site ressemblent à ceci:

http://www.lifecellskin.us/About

Le site est déjà indexé par SEO. donc je ne veux pas perdre le classement SE.

Merci d'avoir lu ceci et espérons que quelqu'un pourra nous éclairer ...

7
shalu

Les URL de page sont définies par les slugs et, par défaut, elles sont formatées et minuscules par la fonction sanitize_title_with_dashes() . Cependant, cette fonction est appelée via un filtre, et vous pouvez décrocher le filtre pour qu’il ne soit pas appelé:

remove_filter( 'sanitize_title', 'sanitize_title_with_dashes' );

Cela n'est probablement pas une bonne idée, car cela ne supprimera pas les espaces et autres éléments étranges de la limace. Je vous suggère de copier la fonction existante, de supprimer la partie qui la met en minuscule et de la brancher à nouveau:

add_filter( 'sanitize_title', 'wpse5029_sanitize_title_with_dashes' );
function wpse5029_sanitize_title_with_dashes($title) {
    $title = strip_tags($title);
    // Preserve escaped octets.
    $title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title);
    // Remove percent signs that are not part of an octet.
    $title = str_replace('%', '', $title);
    // Restore octets.
    $title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title);

    $title = remove_accents($title);
    if (seems_utf8($title)) {
        //if (function_exists('mb_strtolower')) {
        //    $title = mb_strtolower($title, 'UTF-8');
        //}
        $title = utf8_uri_encode($title, 200);
    }

    //$title = strtolower($title);
    $title = preg_replace('/&.+?;/', '', $title); // kill entities
    $title = str_replace('.', '-', $title);
    // Keep upper-case chars too!
    $title = preg_replace('/[^%a-zA-Z0-9 _-]/', '', $title);
    $title = preg_replace('/\s+/', '-', $title);
    $title = preg_replace('|-+|', '-', $title);
    $title = trim($title, '-');

    return $title;
}
8
Jan Fabry

Je vous recommande vraiment de vous en tenir aux URL minuscules de votre site que WordPress utilise (je considère que les URL minuscules sont de toute façon une bonne pratique)} mais que vous configurez des redirections 301 pour toutes les URL pour lesquelles vous avez ce problème. Je trouve que cela se termine généralement par la douleur lorsque vous essayez de lutter contre une plate-forme pour l'empêcher de faire ce qu'elle veut, et les structures d'URL sont vraiment intégrées à l'architecture de WordPress.

J'ai écrit une autre réponse qui est très similaire à vos besoins et cet exemple peut vous montrer comment utiliser le hook 'template_redirect' pour configurer une redirection pour ces URL. Voici le problème:

Si vous souhaitez plus de précisions, s'il vous plaît demander.

6
MikeSchinkel

Autant que je sache, les moteurs de recherche ne sont pas spécifiques à la casse, bien que les URL soient sensibles à la casse. Je recommanderais de supprimer le format de fichier en majuscule, car il est difficile pour les utilisateurs de s'en souvenir.

Si vous voulez vraiment vous en tenir à la structure précédente, vous devrez travailler avec regexp (expressions régulières) dans le fichier .htaccess.

1
superUntitled