- Statut : non résolu
- Ce sujet contient 8 réponses, 2 participants et a été mis à jour pour la dernière fois par Arkados, le il y a 14 années et 3 mois.
-
AuteurMessages
-
28 mai 2010 à 9 h 23 min #482525
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 ?
28 mai 2010 à 10 h 39 min #727439tu 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 ?
28 mai 2010 à 18 h 49 min #727440Plutô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 »>’);30 mai 2010 à 12 h 37 min #727441Bon, il faudra un initié aux manipulations SQL par PHP parce que là je ne compte plus les Parse error 😐
Voici le truc le plus fonctionnel que j’ai obtenu jusque là:
-15858; $i–){
UPDATE wp_posts SET post_content = REPLACE(post_content, ‘-11867’, ‘.html’)
}
?>Bon là il m’a remplacé par mais aussi partout où la chaine -11867 est apparue (logique) alors que je cherche à faire cela que sur les fins de liens (-11867″>)
Comme vous pouvez voir, j’arrive pas à lui faire interpréter $i dans la requête. Ni même à ajouter « > dans les string (il veut rien savoir du « > non plus)
Il doit bien y avoir un moyen, non ?
Soluce de secours: un script PHP qui génère les chiffres et les entoure par x et y (avec un bête echo pour les afficher):
x11867y
x11868y
x11869yAvec Notepad++ je remplace les xy par la partie commune de la requête:
x = UPDATE wp_posts SET post_content = REPLACE(post_content, ‘-
y = « >’, ‘.html »>’)Puis je copie-colle le résultat dans la fenêtre d’exécution SQL de Phpmyadmin:
UPDATE wp_posts SET post_content = REPLACE(post_content, ‘-11867″>’, ‘.html »>’)
UPDATE wp_posts SET post_content = REPLACE(post_content, ‘-11868″>’, ‘.html »>’)
UPDATE wp_posts SET post_content = REPLACE(post_content, ‘-11869″>’, ‘.html »>’)Je suis en train de bosser sur le script générateur de chiffres, je re si j’ai du nouveau
30 mai 2010 à 13 h 06 min #727442Et 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 yJ’enregistre en fichier html et j’ouvre avec le navigateur:
x1y
x2y
x3y
x4y
x5y
x6y
x7y
x8yJe 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]
30 mai 2010 à 13 h 07 min #727443Hum, pourquoi pas. Merci pour ce partage. Tout cela pour pouvoir aspirer ton propre site. La fonction exporter ne te suffisait pas ? Pourquoi ?
30 mai 2010 à 13 h 10 min #727444Certains é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 🙂
30 mai 2010 à 13 h 13 min #727445Oui 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.30 mai 2010 à 14 h 07 min #727446Note: 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.
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.