wp2pluxml : passez de Wordpress ou SPIP à Pluxml en un clic !
Quittez WordPress ou SPIP pour PluXml avec wp2pluxml !
Le projet est sur github : https://github.com/nicosomb/wp2pluxml
Pour quitter WordPress, téléchargez la branche master (dernière version stable) https://github.com/nicosomb/wp2pluxml
Pour quitter SPIP, téléchargez la branche master également
(sûrement instable, des bugs, etc.) https://github.com/nicosomb/wp2pluxml/
Le projet est sur github : https://github.com/nicosomb/wp2pluxml
Pour quitter WordPress, téléchargez la branche master (dernière version stable) https://github.com/nicosomb/wp2pluxml
Pour quitter SPIP, téléchargez la branche master également
0
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Bravo !
à plus,
Gzyg
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
https://github.com/nicosomb/wp2pluxml
Pour les rapports de bugs, c'est ici :
https://github.com/nicosomb/wp2pluxml/issues
À vos claviers
magnifique ça
voila le package qui fera venir encore plus de membres sur pluxml
L'importation des billets se fait sans problème connu, l'importation des commentaires du blog Wordpress est en cours de développement.
Des questions, des remarques, des envies pour ce projet ? N'hésitez pas
Il y a déjà une discussion concernant la récupération des médias de Wordpress.
Venez apporter votre grain de sel
J'ai modifié Wordpress.class.php en Joomla.class.php
Quelqu'un peux me donner son avis sur le code ?
Que voici
<?php /** * Classe Joomla * * Correspond à un billet PluXml avec les données de Joomla * * @category wp2pluxml * @author Eric Seguinard * @copyright 2010 * @license http://www.opensource.org/licenses/mit-license.php MIT License Ce script est basé sur le travail de Nicolas Loeuillet pour wordpress. */ class Wordpress { /** * Identifiant du billet sur 4 caractères (0000) * @var string */ private $id; /** * Titre du billet * @var string */ private $title; /** /** * Permet de savoir si on peut poster des commentaires. Si $allow_com vaut * 1, on peut poster. S'il vaut 0, on ne peut pas. * @var string */ // private $allow_com; /** * Introd du billet au format HTML * @var string */ private $introtext; /** * Contenu du billet au format HTML * @var string */ private $fulltext; /** * URL du billet * @var string */ private $alias; /** * Date de publication du billet * @var string */ private $created; /** * Nom de l'auteur des billets * @var string */ private $created_by; /** * URL de la rubrique * @var string */ private $sectionid; /** * Identifiant de la rubrique qui contient le billet sur 3 caractères (000) * @var string */ private $catid; /** * Liste des commentaires du billet * @var array */ // private $comments; /** * Constructeur * * @access public * @param SimpleXMLElement $item */ public function __construct(SimpleXMLElement $item) { $this->setTitle($item->title); $this->setAllowCom($item->comment_status); $this->setChapo($item->excerpt); $this->setContent($item->content); $this->setUrl($item->post_name); $this->setDate($item->post_date); $this->setRubriqueUrl($item->category); // $this->setComments($item->comment); } /** * Setter de l'identifiant * * @access public * @param integer $id */ public function setId($id) { $id = sprintf("%04s", $id); $this->id = $id; } /** * Getter de l'identifiant * * @access public * @return string identifiant sur 4 caractères (0000) */ public function getId() { return $this->id; } /** * Setter de l'identifiant * * @access public * @param string $title */ public function setTitle($title) { $this->title = $title; } /** * Getter du titre * * @access public * @return string */ public function getTitle() { return $this->title; } /** * Setter de allow_com (commentaires autorisés) * * @access public * @param string $comment_status */ // public function setAllowCom($comment_status) // { // $this->allow_com = ($comment_status == 'open') ? '1' : '0'; //} /** * Getter de allow_com * * @access public * @return integer */ // public function getAllowCom() // { // return $this->allow_com; //} /** * Setter du chapeau * * @access public * @param string $chapo */ public function setChapo($introtext) { $this->chapo = nl2br($introtext); } /** * Getter du chapeau * * @access public * @return string */ public function getChapo() { return $this->chapo; } /** * Setter du contenu * * @access public * @param string $content */ public function setContent($fulltext) { $this->content = nl2br($fulltext); } /** * Getter du contenu * * @access public * @return string */ public function getContent() { return $this->content; } /** * Setter de l'URL * * @access public * @param string $post_name */ public function setUrl($post_name) { $toReplace = array('%c2%ab', '%c2%bb', '%c3%b8', '%d0%b0', '%e2%80%a6', '%c2%a0', '%e2%80%a6', '%c2%a0a', '_', '/'); $post_name = str_replace($toReplace, '', $post_name); $this->url = $post_name; } /** * Getter de l'URL * * @access public * @return string */ public function getUrl() { return $this->url; } /** * Setter de la date * * @access public * @param string $post_date */ public function setDate($post_date) { $this->date = $post_date; } /** * Getter de la date * * @access public * @return string */ public function getDate() { return $this->date; } /** * Setter de l'auteur * * @access public * @param string $author */ public function setAuthor($author) { $this->author = $author; } /** * Getter de l'auteur * * @access public * @return string */ public function getAuthor() { return $this->author; } /** * Setter de l'URL de la première rubrique * * @access public * @param array $categories ensemble des catégories du billet */ public function setRubriqueUrl($categories) { $rubrique = ''; foreach ($categories as $category) { if ($category['domain'] == 'category') { $rubrique = $category['nicename']; break; } } $this->rubrique_url = $rubrique; } /** * Getter de l'identifiant * * @access public * @return string */ public function getRubriqueUrl() { return $this->rubrique_url; } /** * Setter de l'identifiant de la rubrique sur 3 caractères (000) * * @access public * @param string $rubrique_id */ public function setRubriqueId($sectionid) { $this->sectionid = $sectionid; } /** * Getter de l'identifiant * * @access public * @return string */ public function getRubriqueId() { return $this->sectionid; } /** * Setter des commentaires * * @access public * @param array $comments */ public function setComments($comments) { $tabComments = array(); $count = 0; foreach ($comments as $comment) { if ($comment->comment_approved != 'spam') { $tabComments[$count]['comment_author'] = $comment->comment_author; $tabComments[$count]['comment_author_email'] = $comment->comment_author_email; $tabComments[$count]['comment_author_url'] = $comment->comment_author_url; $tabComments[$count]['comment_author_IP'] = $comment->comment_author_IP; $tabComments[$count]['comment_date'] = $comment->comment_date; $tabComments[$count]['comment_content'] = $comment->comment_content; $count ++; } } $this->comments = $tabComments; } /** * Getter des commentaires * * @access public * @return array */ public function getComments() { return $this->comments; } /** * Formate la date pour être utilisée dans le nom du fichier * * @access private * @return string */ private function getDateForFilename() { return substr($this->date, 0, 4) . substr($this->date, 5, 2) . substr($this->date, 8, 2) . substr($this->date, 11, 2) . substr($this->date, 14, 2); } /** * Crée le nom du fichier * * @access public * @return string */ public function getFilename() { return $this->id . '.' . $this->getRubriqueId() . '.' . $this->getDateForFilename() . '.' . $this->url . '.xml'; } }Ne fais tu pas un test en local ?
En attendant un expert en la matière...
Est-ce qu'on a ça en stock ?
Pour le moment, wp2pluxml assigne tout au même auteur (même si votre blog Wordpress contenait plusieurs auteurs).
Les tags ne sont pas repris tant que ceux-ci ne seront pas gérés dans PluXml.
Les liens inter-articles sont corrigés grâce au fichier .htaccess généré durant l'exécution de wp2pluxml. Ce fichier .htaccess s'occupe de la redirection des catégories et des billets.
le site migré : http://dev.loeuillet.org
Sur le site de dev, il n'y a pas encore le .htaccess qui redirige les anciennes URLs vers les nouveaux billets de PluXml. Et les images n'ont pas été copiées (pour ne pas blinder inutilement le serveur ;-) ) .
N'hésitez pas à donner des remarques si y'en a ;-)
Donc intérêt d'avoir le mod rewrite sur son hébergeur.
Je suis en train de revoir l'architecture de l'outil pour permettre plus de souplesse et pouvoir ajouter une plate-forme de blogs plus facilement.
Avez-vous des exports XML sous la main ?
Ou alors savez-vous s'il existe des plugins sur chaque plate-forme pour les récupérer ?
Bon j'ai fait ce que j'ai pu mais comme je ne suis pas développeur j'ai osé aller plus loin dans Tools.class.php
http://www.multiupload.com/6O4CE4EOYD
Peut-être vais-je écrire une énormité, mais bon, je me lance : et spip2pluxml, est-ce envisageable ?
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
L'accès à son dépôt sur Google ne m'est pas accessible.
Merci par avance.
et ... un ancien 3 *** FFBB
comme quoi le monde est bien petit ...
mes sites principaux : fonds d'écran gratuits - longue traîne - référencer votre site - brocante en ligne -