Longeur des chaines de caractères: Ô surprise (Créer un compte)

  • Statut : non résolu
8 sujets de 16 à 23 (sur un total de 23)
  • Auteur
    Messages
  • #1032070
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions

    Sous réserve, il me semble qu’il te suffit de changer les paramètres des permaliens.

    Réf: http://www.geekpress.fr/wordpress/guide/url-rewriting-1835/

    ou « la bible » le codex : https://codex.wordpress.org/fr:Utilisation_des_permaliens

    #1032071
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions

    Ah! Il faut mettre ton site à la racine, en ce moment il se situe dans un dossier nommé wordpress.

    La question de PhiLyon n’a pas été inutile car elle nous a fait gagner du temps 😉

    #1032072
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions

    Désolée aujourd’hui je suis un peu crevée donc j’avais oublié qu’ 2h00 du matin

    ouistiti.net wrote:
    D’après ce tuto : http://www.wpbeginner.com/wp-tutorials/ … -rankings/ il me semble qu’il y a plus simple.

    1. Une modification dans le thème de blogger (page html)
    2. Ajouter le code proposé dans le fichier functions.php.

    À tester en local

    Donc il y a aussi possibilité :

    function blogger_query_vars_filter( $vars ) {
    02
    $vars[] = « blogger »;
    03
    return $vars;
    04
    }
    05

    06
    add_filter(‘query_vars’, ‘blogger_query_vars_filter’);
    07

    08
    function blogger_template_redirect() {
    09
    global $wp_query;
    10
    $blogger = $wp_query->query_vars[‘blogger’];
    11
    if ( isset ( $blogger ) ) {
    12
    wp_redirect( get_wordpress_url ( $blogger ) , 301 );
    13
    exit;
    14
    }
    15
    }
    16

    17
    add_action( ‘template_redirect’, ‘blogger_template_redirect’ );
    18

    19
    function get_wordpress_url($blogger) {
    20
    if ( preg_match(‘@^(?:https?://)?([^/]+)(.*)@i’, $blogger, $url_parts) ) {
    21
    $query = new WP_Query (
    22
    array ( « meta_key » => « blogger_permalink », « meta_value » => $url_parts[2] ) );
    23
    if ($query->have_posts()) {
    24
    $query->the_post();
    25
    $url = get_permalink();
    26
    }
    27
    wp_reset_postdata();
    28
    }
    29
    return $url ? $url : home_url();
    30
    }

    Il faut lire les tutos… bon ! je vais retourner dans ma tanière, afin d’hiberner quelques heures :hs:

    #1032073
    Hanami
    Participant
    Chevalier WordPress
    173 contributions
    ouistiti.net wrote:
    D’après ce tuto : http://www.wpbeginner.com/wp-tutorials/ … -rankings/ il me semble qu’il y a plus simple.
    Il faut lire les tutos… bon ! je vais retourner dans ma tanière, afin d’hiberner quelques heures :hs:

    Bonjour et MERCI pour les conseils.
    Je ne suis pas parvenu à trouver le tuto en suivant le lien « http://www.wpbeginner.com/wp-tutorials/ … -rankings/ ».

    J’ai regardé les 2 fonctions incluses dont ce code

    // repérer le nom de l’hôte dans l’URL
    preg_match(‘@^(?:http://)?([^/]+)@i’,
    « http://www.php.net/index.html », $matches);
    $host = $matches[1];

    if ( preg_match(‘@^(?:https?: //)?([^/]+)(.*)@i’, $blogger, $url_parts) )

    Je ne connaissais pas, il va falloir que je creuse « un peu ».
    Je ne suis pas sur de comprendre ce qu’elle fait mais il me semble qu’elle renvoie le nom de domaine contenu dans $Blogger dans l’array $url_parts.
    Pour l’utiliser il faut de toutes façon scanner tous les articles pour trouver ceux qui possèdent de liens entre-articles et extraire du lien le titre de l’article (modifié à la sauce-blogger).
    Par exemple, dans « http://marc-hanami.blogspot.fr/2013/09/the-cigale-18-building-keeps-going.html » ce qui est important c’est la partie « the-cigale-18-building-keeps-going.html », sachant que le titre est « The Cigale 18, Building keeps going during summer« .
    Et là, il faut comparer la dernière partie de l’url Blogger avec le titre de l’article cible dans WP.
    C’est maintenant qu’il faut supprimer tous les diacritiques, les blancs et autres caractères non alpha-numériques du titre dans WP et ne retenir dans ce titre WP que la longueur de la chaine qui se trouve dans le lien Blogger car cette partie est souvent plus courte que le titre complet.

    $titre=no_fancy_char($titre);
    $titre =  »’.$titre. »’;
    $nb_char= iconv_strlen($titre);
    $target=$wpdb->get_row( » SELECT id, guid, AsciiOnly(NoAccent(post_title))
    FROM wp_posts
    WHERE locate ($titre,substr(AsciiOnly(NoAccent(post_title)),1,$nb_char),1)0″);

    Devoir utiliser « $titre =  »’.$titre. »’;  » a été une surprise !!!

    Quoi qu’il en soit, finalement, mon automate marche correctement et utilise wp_posts.guid comme url dans les adresses WP car le guid n’est pas sensé changer et est facile à obtenir.
    Bien sur, j’ai eu quelques difficultés à mettre au point car si il faut décoder le lien Blogger d’origine pour savoir quel est l’article ‘cible’ dans WP, ce que la fonction citée plus haut semble faire, ce n’est pas le plus délicat.

    Il produit également une sortie dans le tableur d’Open Office pour lister les articles pointeurs et les articles pointés.
    Pour bien faire il faudrait que j’ai un trigger dans la base qui, avant d’autoriser la suppression d’un article, vérifie qu’il n’est pas pointé par un autre. D’où l’idée du tableur cité plus haut que l’on peut convertir en une table à 2 colonnes « pointe_sur » et « pointé_par ». Cela se fait pour gérer les contraintes d’intégrité référentielle dans d’autres contexte mais je ne sais pas si j’aurai le courage.

    Merci encore pour les adresses des tutos, je vais m’y mettre.

    Marc.

    #1032074
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions

    Il est ici : http://www.wpbeginner.com/wp-tutorials/how-to-switch-from-blogger-to-wordpress-without-losing-google-rankings/

    Je ne peux pas vous aider plus, car je n’ai jamais expérimenté ce cas là.

    #1032075
    Hanami
    Participant
    Chevalier WordPress
    173 contributions

    Pas de problème, j’ai fini.
    Si jamais vous avez le même cas, ou si cela vous intéresse je vous envoie le code.
    J’ai également du faire un automate pour assigner des catégories aux articles (800+) car Blogger n’a que des labels que WP reprend mais n’affecte pas toujours comme il faut.
    L’automate fonctionne sur une recherche de mots-clefs dans le titre et dans le corps du texte.
    Une catégorie correspond à 10 à 20 mots-clefs, et on peut avoir autant de catégorie que l’on veut.
    Il faut trouver au moins « n » mots clefs dans le texte (avec ou sans répétition, au choix) ou 1 dans le titre pour affecter une catégorie.
    Cela génère aussi un fichier OpenOffice (tableur) pour contrôler à quelles catégories appartient un article et sur la base de quels mots clefs trouvés combien de fois.
    Utile si l’on a une grosse base à reprendre, ce qui est mon cas.

    Marc.

    #1032076
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions

    Euh! ben en ce qui me concerne, si j’ai un projet pointu (avec une grosse base de données à reprendre). Par miracle j’ai toujours un développeur sous la main 😆

    Cela dit : je suis heureuse d’avoir pu contribuer à votre belle aventure entre blogger et WordPress.

    Néanmoins si l’envie est au rendez-vous, vous pouvez partager votre solution > [Depôts] Extensions, Trucs, Astuces

    Bonne continuation !

    #1032077
    Hanami
    Participant
    Chevalier WordPress
    173 contributions

    OK, merci, je ferai cela après avoir rendu le code « bien propre ».✅

8 sujets de 16 à 23 (sur un total de 23)
  • Vous devez être connecté pour répondre à ce sujet.