Sélectionner une page

Script GuppY vers WordPress

Si vous avez un site qui tourne sous Guppy et désirez passer sous WordPress, ce petit script pourrait vous intéresser…

On m’a récemment demandé de passer un gros site qui tournait sous Guppy vers du WordPress. Après quelques recherches, je me suis rendu compte que Guppy n’utilise pas de base de données, mais stocke les pages et les articles dans des fichiers PHP. Plus inhabituel encore, il n’existe pas de solution pour transférer directement des articles Guppy vers une belle installation toute fraîche de WordPress (correction).

J’ai donc rédigé un script en PHP, utilisable sous la forme d’un template de page pour un thème WordPress, qui parse les fichiers de GuppY et enregistre tous les articles trouvés dans la base de données de WordPress. Le script permet de garder les informations de l’auteur, de la date de publication et de la catégorie de l’article.

Prérequis

  • Vous aurez besoin d’une installation WordPress vierge, avec le thème Twenty-twelve
  • Copiez l’intégralité du dossier « data » de votre site GuppY dans le dossier « wp-content/themes » de votre WordPress
    Ce dossier est la « base de données » de GuppY, et contient tous vos articles, pages et réglages.
  • Copiez les dossiers « file », « img » et « photo » (si existants) et leur contenu de votre GuppY vers la racine de votre WordPress
    Ces dossiers contiennent les médias (images, sons, vidéos) que vous avez ajoutés à vos articles GuppY.
  • Créez les mêmes catégories sur votre WordPress que sur votre Guppy, et notez leur IDs respectifs.

 Installation

Vous pouvez télécharger ce script ci-après. Pour rappel, il est en bêta et à utiliser à vos risque et péril. Je vous conseille de ne l’utiliser que dans un environnement de développement, et en ayant sauvegardé vos sites d’origine et de destination. Il vous permettra néanmoins d’importer assez sûrement les articles GuppY dans une installation WordPress.

Le script, comme indiqué au début de celui-ci, est en licence GNU GPL v3 (site officiel). Vous pouvez donc l’utiliser et le modifier à votre guise, mais si vous le redistribuez (tout ou en partie), vous êtes obligés de lui attribuer la licence GNU GPL.

script

Télécharger le script GuppY-export

Pour l’installer, copiez ce script dans le dossier « page-templates » du thème Twenty-twelve.

Si vous n’avez pas le thème Twenty-twelve, vous devez l’installer et l’activer.

Configuration

Pour que le script soit adapté à votre usage, veuillez l’ouvrir, parcourir sa partie « Lisez-moi » puis modifier la partie « Configuration ».

Utilisation

Pour exporter vos articles, veuillez créer une nouvelle page sur votre WordPress, et lui attribuer le template de page « Script d’importation ».

Naviguez ensuite vers cette page depuis la partie publique de votre WordPress. Le script commencera à s’exécuter et vous avertira lorsque le travail sera terminé.

Terminaison

Une fois que le script aura fait son devoir et que vous serez satisfait, vous pouvez supprimer les fichiers suivants :

  • le script et sa licence
  • le dossier « data »
  • le répertoire contenant votre site GuppY

Conclusion

Si cet article vous a été utile, je vous remercie de me laisser un petit commentaire 😉

If you found this script useful, thanks for leaving a comment 😉

Notes de bas de page

  1. Après une recherche plus récente, je suis tombé sur ce site, qui propose de faire le travail. Je ne connais cependant pas leur efficacité.

39 Commentaires

  1. Phil OGM

    Bonjour,

    dans le sens inverse, existe-t-il un script pour passer de WordPress vers GuppY ?

    Merci de votre aide !

    Réponse
    • Nicolas

      Bonjour Phil,
      Après quelques recherches sur Google, je ne pense pas que cela existe pour le moment.
      Cependant vous pouvez me contacter pour un devis au moyen du formulaire de contact 😉
      Bon courage dans vos recherches !

      Réponse
    • thierry

      bonjour

      je vient de reinstaller mon wordpress apres un crash dd

      le script me dis debut du script fin du script

      merci pour votre aide

      voir le message d’erreur d’apache2

      [Thu May 26 23:54:55.059252 2016] [:error] [pid 4370] [client 192.168.0.254:33602] PHP Warning: Cannot modify header information – headers already sent by (output started at /stockage/portail/wp-includes/class.wp-styles.php:237) in /stockage/portail/wp-content/themes/twentytwelve/page-templates/guppy-export.php on line 159, referer: http://freezone.linux59.info/

      Réponse
      • Nicolas

        Bonjour Thierry,
        Visiblement, il y a un souci à la ligne 159 du script qui envoie les headers une seconde fois.
        Avez-vous modifié le script de base ?

        Réponse
        • thierry

          non rien de special par contre maintenant ca marche , mais il me creer les articles en double merci

          Réponse
          • Nicolas

            Dans ce cas, il faut supprimer tous les articles depuis l’admin WordPress et relancer le processus.

        • david de boisvilliers

          Bonjour,
          merci pour votre travail.
          Je suis en train d’essayer de migrer mon guppy vers WP
          mais je ne trouve pas le dossier wp-content – theme
          Merci d’avance
          David

          Réponse
          • Nicolas

            Bonjour David,
            Le dossier wp-content est normalement présent à la racine de votre site WordPress. Il contient plusieurs dossiers essentiels au CMS, notamment les thèmes et les extensions (plugins).

            Comment accédez-vous à votre wp ? Est-il en local ou par FTP ?

            (Pour rappel, mieux vaut ne pas jouer avec le script sur un site en production.)

  2. Alain Dubus

    Bonjour,
    « Créez les mêmes catégories sur votre WordPress que sur votre Guppy, et notez leur IDs respectifs. »
    Comment trouver les ID des catégories dans Guppy ?
    Merci

    Réponse
    • Nicolas

      Bonjour Alain,
      GuppY n’utilise pas d’ID de catégorie à proprement parler, mais une chaîne de caractère unique, qui est le nom de la catégorie.
      Dans cette étape, il faut donc repérer toutes les catégories GuppY existant sur votre site, les recréer à l’identique dans WordPress, et noter uniquement l’ID WordPress.
      Ainsi, pour adapter le script à votre site, on modifiera la ligne 93 (variable $cat_guppy) en notant les catégories GuppY en toutes lettres, et à la ligne 99 (variable $cat_wp) les ID WordPress correspondants.

      J’espère que cette précision aura pu vous aider !

      Réponse
      • Alain

        Merci Nicolas. Je n’ai pas encore fait la manip.
        Alain

        Réponse
  3. Alain Dubus

    Bonjour Nicolas,
    J’ai modifié le script (j’ai 21 rubriques avec des centaines d’articles) et j’ai créé une page que j’ai nommé « Script d’importation ». Quand je l’ouvre il ne se passe rien. Je débute vraiment avec WordPress.
    Merci
    Alain

    Réponse
    • Nicolas

      Bonjour Alain,
      Il vous reste 2 étapes à faire :

      • Uploader mon script (qui est en fait un modèle de page WordPress, ou template) dans le dossier du thème Twenty-Eleven.
      • Attribuer ce modèle de page à votre page d’importation et sauvegarder.

      Vous trouverez de la documentation sur ces étapes sur le wiki francophone de WordPress.

      Je me permets de vous remettre en garde, ce script est fourni as-is sans garantie de fonctionnement, donc veillez bien à utiliser un serveur de développement, et de sauvegarder vos données à un autre endroit.

      Réponse
  4. freezone

    Bonjour

    j’ai ce probleme avec le script

    Jan 15 13:24:32 liondor suhosin[19926]: ALERT – script tried to increase memory_limit to 268435456 bytes which is above the allowed value (attacker ‘192.168.0.254’, file ‘/stockage/portail/freezone/wp-admin/admin.php’, line 137)

    merci

    Réponse
    • Nicolas

      Bonjour freezone,

      Effectivement, si votre ancien site a beaucoup d’articles, cela peut prendre beaucoup de temps et de RAM.
      Pour être sûr que l’importation ne plante pas, il faut augmenter les limites de timeout et de mémoire de votre serveur Apache, comme indiqué en en-tête de mon script.
      De plus, il apparaît que Suhosin fait parfois du zèle, et empêche le fonctionnement de scripts trop gourmands (cf. http://wordpress.org/support/topic/alert-script-tried-to-increase-memory_limit-to-268435456-bytes-which-is-above#post-3098685 ). Essayez donc aussi d’augmenter la limite autorisée par Suhosin, comme indiqué dans le lien ci-dessus.

      Merci d’utiliser mon script et pour le feedback, et bon courage 🙂

      Réponse
      • Alain Dubus

        J’ai fini par copier/coller tous mes articles. ça a prit du temps mais c’est fait (plus de 500 articles).

        Réponse
        • Nicolas

          Ahah, c’est un fail pour mon script alors ! ^^
          En même temps, il est plutôt adressé aux bricoleurs, et mes services vous sont proposés pour vous aider à faire le transfert de vos articles…
          Néanmoins, merci de votre feedback, Alain !

          Réponse
        • freezone

          dans quelle fichier augmenter la memoire ??

          Réponse
          • Nicolas

            Dans php.ini, il faut augmenter la variable « memory_limit », puis redémarrer le serveur Apache.

  5. ebar

    Bonjour,
    super script, ça fonctionne impec!!!!
    Quelques modifications pour que ça fonctionne avec les blogs guppy.
    Juste une petite question : peut-on rajouter aussi les commentaire ? (je pense que non avec les ID des articles WP différents de Guppy mais étant newbie peut-être me trompe-je).
    En tous cas bravo !!!

    Réponse
    • Nicolas

      Bonjour ebar,
      Merci pour le retour et les félicitations 🙂
      Je ne me suis pas posé la question des commentaires, car je n’en avais pas besoin, mais c’est sûrement possible en forçant quelques lignes de plus dans le script !
      Et comme il est sous licence GNU/GPL, c’est tout à fait possible que quelqu’un le forke et ajoute cette option…
      Seriez-vous intéressé que je mette le script sur GitHub et qu’on travaille ensemble sur cette option ?

      Réponse
  6. david

    Bonjour , l’import a tres bien fonctionné mais je n’ai pas trouvé comment faire ce point : Créez les mêmes catégories sur votre WordPress que sur votre Guppy, et notez leur IDs respectifs.

    J’ai donc tous les articles mais non classé sous wordpress …

    Pourriez vous m’aider svp ?

    Merci par avance

    David

    Réponse
    • Nicolas

      Bonjour David,

      En fait, il faut simplement recréer à la main dans WordPress (partie Admin -> Articles -> Catégories) les mêmes catégories qui existent déjà dans votre GuppY.
      Une fois que c’est fait, notez les ID des catégories créées dans WP, et vous pourrez remplir le tableau de correspondance dans le script. Les ID WP sont visibles lorsque vous passez votre souris sur le lien d’une catégorie (tag_ID=…).

      Comme vous avez déjà fait un import, il faudra supprimer le contenu de votre site puis relancer le script afin de trier les articles dans les bonnes catégories.

      Bon courage et merci d’utiliser ce script,
      Nicolas

      Réponse
      • David

        Bonjour et merci pour retour , je teste de suite et reviens vous dire le résultat .

        Cordialement

        David

        Réponse
  7. david

    Désolé je ne connais rien au PHP et je ne comprends pas comment entrer les ID des catégories .
    Elles sont bien crées sur WordPress, j’ai relevé les ids (38;39;40;41;42;43;44;45)
    Je ne sais pas ou trouver les ids sur Guppy …

    Pourriez vous me faire un petit exemple svp avec des ids exemple ?

    // Les ID des catÈgories correspondantes dans WordPress
    // Si la catÈgorie de GuppY ne doit pas Ítre importÈe, mettre 0.
    $cat_wp = array(1,
    2,
    3);

    Réponse
    • Nicolas

      Avec les catégories ‘foo’ et ‘bar’ dans Guppy, si vous avez créé les mêmes dans WordPress et récupéré leur ID (disons 38 et 39), il ne reste qu’à compléter le script comme suit :

      $cat_guppy = array( ‘foo’,
      ‘bar’);

      $cat_wp = array(38,
      39);

      Si je me rappelle bien, il n’existe pas d’ID dans GuppY pour les catégories. Le nom de la catégorie est lui-même l’ID. Donc pour une catégorie « Chapeaux », la ligne à écrire dans mon tableau $cat_guppy est :
      $cat_guppy = array( …
      ‘Chapeaux’,
      …);

      Réponse
      • david

        MERCI BEAUCOUP !!!!! Votre script est juste parfait , cela a fonctionné parfaitement .

        Vous m’avez été d’une très grande aide, encore merci à vous pour votre réactivité quand à mes questions.

        David

        Réponse
        • Nicolas

          Ravi de vous avoir aidé 🙂
          N’hésitez pas à me tenir au courant de l’avancement de votre projet, et bonne chance !

          Réponse
  8. Christophe

    Bonjour Nicolas,

    Merci pour ce script! Je suis entrain de migrer un très très vieux guppy en utilisant ce script.

    Je l’ai modifié un peu pour pouvoir:

    a) importer les téléchargements (dans une catégorie wp « téléchargement ») avec insertion du lien de téléchargement dans la fin de l’article (pas trouvé mieux pour le moment…)

    b) importer les nouvelles (dans une catégories wp « nouvelles »)

    Le cas a) peut être satisfaisant mais si on pouvait importer les téléchargements dans une extension de téléchargement (qui supporte les liens externes importé de guppy) cela serait plus sympa…ou utiliser les « médias » natifs à WP, possible ou pas?

    Il existe plusieurs wp download manager (et pas qu’un peu, voir http://wp-freemium.com/plugin-wordpress-fichiers/ ) et je présume donc que le script d’import doit être adapté à chaque extension…donc pas évident mais si cela t’intéresse de passer un peu de temps là dessus, je pense que tu feras d’autres heureux!

    Dans tous les cas, quand j’aurais fini d’améliorer le script, si cela intéresse des personnes, on pourrait faire en sorte que ce petit fork soit publié sur ce site par Nicolas? (après révision par lui même évidement)

    ps: Nicolas, je t’ai envoyé un mail il y a quelques mois mais pas de réponse…

    Réponse
  9. Nicolas

    Bonjour Christophe,

    Merci pour ton message ! Ces six derniers mois ont été intenses professionnellement, et j’ai mis mon site en second plan, voilà pourquoi je n’ai pas pris le temps de te répondre. Mille excuses !

    a)
    Le lien que tu m’as passé ne référence que des plugins qui permettent aux visiteurs de télécharger des fichiers, ou à l’administrateur de les gérer. Je n’ai pas trouvé de plugin qui ajoute la capacité à WordPress de gérer des fichiers à travers une API ou directement en utilisant les fonctions du core.

    Je pense que la solution à ton problème serait de :
    1) transformer mon script en un plugin WordPress, ce que j’aurai dû faire depuis le début (https://codex.wordpress.org/Writing_a_Plugin). Ceci devrait permettre d’utiliser directement les fonctionnalités du core WordPress sans se compliquer la vie.
    2) utiliser l’API du système de fichiers de WordPress (https://codex.wordpress.org/Filesystem_API) afin de copier les fichiers GuppY dans les bons dossiers WordPress, récupérer leur URL et modifier en fonction le post.

    b)
    Afin d’importer toutes les nouvelles GuppY dans une seule catégorie WordPress, il suffit de récupérer l’ID de leur catégorie et leur attribuer la catégorie WordPress « nouvelles » :

    $cat_guppy = array( ‘cat1’,
    ‘cat2’,
    ‘cat3’);
    $cat_wp = array(1,
    1,
    1);

    Je te laisse me dire ce que tu en penses !

    Réponse
  10. Christophe

    Salut,

    Pour le b) c’est ce que j’ai fais effectivement.
    pour le a) je te réponds par e-mail

    A bientôt

    Réponse
  11. Christophe

    ps: pour les catégories avec ma config serveur, j’ai dû passer tous les caractères spéciaux (accents) directement en UTF8 dans le fichier d’importation, sinon les catégories avec accents n’étaient pas importées.

    J’ai mis quelques heures à trouver donc si cela peut aider, voici comment il faut encoder les accents dans le script:
    é = é
    à = à
    è = è

    + autres éventuels à chercher dans des tables…

    Réponse
  12. Sucrepop

    Bonjour. J’envisage de migrer mon vieux guppy vers Worpress. Articles, nouvelles, blog … plusieurs milliers de données.
    ça vous paraît jouable ?

    Merci

    Réponse
    • Nicolas

      Bonjour Sucrepop,
      Oui, ça paraît jouable. Il faudrait évidemment voir dans la pratique comment est construit votre site, mais d’après ce que j’ai pu voir, cela ne devrait pas poser de problème.
      Il faudra par contre exécuter le script en local, car il ne marchera pas sur votre serveur mutualisé, ainsi qu’une préparation concernant la réattribution dans les bonnes catégories d’articles.
      Tenez-moi au courant de comment ça se sera passé, ou si vous choisissez une autre solution.
      Nicolas

      Réponse
      • Sucrepop

        Ok
        merci pour ce retour. je tenterais ma chance au retour de congés et vous tiens au courant dans tous les cas.

        Réponse
        • Nicolas

          Merci, et bonnes vacances 🙂

          Réponse
          • Sucrepop

            Bon, et bien me voilà au pied du mur, je me lance.
            à suivre …

          • Nicolas

            Bonne chance pour la transition !

Rétroliens/Pings

  1. Katryne | Black Land - Citation de Katryn de Black Land sur scoop.it

Poster le commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *