Search & Replace pour tous les « Post_id » de liens dans post_content (Créer un compte)

  • Statut : non résolu
9 sujets de 1 à 9 (sur un total de 9)
  • Auteur
    Messages
  • #482525
    Arkados
    Membre
    Initié WordPress
    26 contributions

    Résolu: #6

    Bonjour,

    Ma configuration WP actuelle
    – Version de WordPress : 2.9.2
    – Version de PHP/MySQL : 5.2.13 / 5.0.90
    – Extensions en place : Search & Replace, Advanced Permalinks
    – Nom de l’hebergeur : OVH
    – Adresse du site : http://www.fansub-streaming.eu/blog/

    Alors, je vais commencer par expliquer le titre du sujet 🙂

    Comme vous le savez sans doute, l’extension Search & Replace permet de remplacer toutes les occurrences d’une chaine de caractères dans les tables de la base de données (quand on a écrit 5000 fois la même connerie, ce plugin peut la corriger en moins d’une demi-seconde).

    L’extension Advanced Permalinks permet, elle, de changer les permaliens tout en ajoutant une redirection pour les anciens permaliens (indispensables pour les liens internes, externes et moteurs de recherche).

    J’ai donc fait un changement de permaliens /%postname%-%post_id% vers /%postname%.html. Nickel chrome, les anciens permaliens redirigent vers les nouveaux.

    Seulement voilà, j’aimerais épargner une page 301 RedirectPermanent aux outils de stats et cache à chaque fois qu’un visiteur clique sur un lien interne (et accessoirement accélérer un petit peu le chargement de la bonne page). Et puisqu’il y a %post_id% dans les anciens permaliens, Search & Replace ne peut rien faire (j’ai testé: il n’interprète pas %post_id%)

    Donc voilà: y a t-il un moyen de changer tous les liens présents dans les articles (table post_content) de sorte à remplacer tous les post_id différents par .html ?

    Techniquement et c’est là que je sèche: Search & Replace devrait chercher et remplacer -1″>, -2″>, -3″>… jusqu’à -15857″> (qui est le post_id le plus récent) par .html »>

    Un script de remplacement incrémentiel en quelque sorte, sans pour autant faire entrer le serveur SQL dans une boucle infinie (qu’il aille pas chercher -15671987654″> et ainsi de suite).

    Des idées ?

    #727439
    chamomor
    Participant
    Maître WordPress
    1912 contributions

    tu devrais trouver ton bonheur là :

    Des requêtes SQL pour vous sauver la vie avec WordPress

    pourquoi tu as mis tes liens en type.html ?

    #727440
    Arkados
    Membre
    Initié WordPress
    26 contributions

    Plutôt qu’une autre extension comme .php ? Pour faciliter la vie à mon aspirateur de site 🙂
    Merci pour le lien, je vais voir si j’arrive à quelque chose avec ça et je repasse.

    Edit: non ça va pas le faire :(

    UPDATE wp_posts SET post_content = REPLACE (post_content, ’-1″>’, ‘.html »>’);
    UPDATE wp_posts SET post_content = REPLACE (post_content, ’-2″>’, ‘.html »>’);
    UPDATE wp_posts SET post_content = REPLACE (post_content, ’-3″>’, ‘.html »>’);

    UPDATE wp_posts SET post_content = REPLACE (post_content, ’-15857″>’, ‘.html »>’);

    #727441
    Arkados
    Membre
    Initié WordPress
    26 contributions
    #727442
    Arkados
    Membre
    Initié WordPress
    26 contributions

    Et voilà, j’ai réussi comme ça 😋 S’agit à présent de passer le tout au serveur SQL, à 1 seconde par ligne il va avoir chaud ^^ Mais ça j’en fais mon affaire.

    Donc voici le bête script générateur de chiffres:

    -17000; $i–){ 
    echo $i;
    }
    ?>

    Il me sort ça:
    -1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18-19…

    Avec Notepad++, je remplace les – par y x
    Puis, je remplace y par y

    J’enregistre en fichier html et j’ouvre avec le navigateur:

    x1y
    x2y
    x3y
    x4y
    x5y
    x6y
    x7y
    x8y

    Je copie-colle le tout dans Notepad++ et je remplace:
    x par UPDATE wp_posts SET post_content = REPLACE(post_content, ‘-
    y par « >’, ‘.html »>’);

    Et bingo !

    UPDATE wp_posts SET post_content = REPLACE(post_content, ‘-1″>’, ‘.html »>’);
    UPDATE wp_posts SET post_content = REPLACE(post_content, ‘-2″>’, ‘.html »>’);
    UPDATE wp_posts SET post_content = REPLACE(post_content, ‘-3″>’, ‘.html »>’);
    UPDATE wp_posts SET post_content = REPLACE(post_content, ‘-4″>’, ‘.html »>’);
    UPDATE wp_posts SET post_content = REPLACE(post_content, ‘-5″>’, ‘.html »>’);
    UPDATE wp_posts SET post_content = REPLACE(post_content, ‘-6″>’, ‘.html »>’);
    UPDATE wp_posts SET post_content = REPLACE(post_content, ‘-7″>’, ‘.html »>’);

    Reste plus qu’à copier-coller cela dans Phpmyadmin et exécuter au fur et à mesure 🙂

    [resolu]

    #727443
    chamomor
    Participant
    Maître WordPress
    1912 contributions

    Hum, pourquoi pas. Merci pour ce partage. Tout cela pour pouvoir aspirer ton propre site. La fonction exporter ne te suffisait pas ? Pourquoi ?

    #727444
    Arkados
    Membre
    Initié WordPress
    26 contributions

    Certains éléments sont relatifs, d’autres absolus, d’autres à référence croisée via site externe (notamment: images dans les posts). Un charabia que HTTRACK n’arrive pas toujours à traiter à son avantage 🙂

    #727445
    chamomor
    Participant
    Maître WordPress
    1912 contributions

    Oui mais tu ne dis pas pourquoi tu as besoin de HTTRACK pour ton propre site.
    D’autre part il suffisait d’utiliser les requêtes sql pour mettre tous les liens en absolus si tel est le problème.

    #727446
    Arkados
    Membre
    Initié WordPress
    26 contributions

    Note: erreur de typo, oublié le ; à la fin de la requête

    chamomor: s’il me faut des fichiers HTML parfaitement exploitables ? Sans extension HTTRACK crée des dossiers du nom du permalien et donc ça devient vite chaotique quand on veut un ensemble pur HTML à transférer sur une plateforme sans PHP-SQL. Les liens relatifs ne sont pas le problème, la raison principale reste l’évitement d’un 301 à chaque fois qu’un visiteur clique sur un lien interne. WP Stats et WP-SuperCache font le double du travail.

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