[PYTHON] Migrez vos propres données CMS vers WordPress

Je l'ai vérifié parce que j'avais besoin de le faire au travail, alors j'ai pris une note.

La destination WordPress utilisait un type de publication personnalisé et ACF, donc c'était un peu ennuyeux.

Écoulement brutal

J'ai décidé de créer WordPress XML, un outil d'importation WordPress, à partir de mes propres données CMS et de migrer les données.

Comme vous pouvez le voir en écrivant le site WordPress en utilisant ACF en XML et en regardant à l'intérieur, ACF semble avoir un identifiant tel que field_5671e74fc8c5e attribué à chaque champ, donc cela est nécessaire lors de la création de WordPress XML. Donc, la configuration est la suivante.

  1. Définissez des types de publication personnalisés et des champs personnalisés dans WordPress de destination.
  2. Dans WordPress de destination, enregistrez les exemples de données avec les valeurs de champ personnalisé entrées correctement.
  3. Exportez XML avec la destination WordPress. Regardez son contenu pour voir le type de publication personnalisé et les identificateurs de champ personnalisés.
  4. Convertissez les données du CMS source en XML pour l'outil d'importation WordPress. Les images doivent être accessibles par URL.
  5. Importez le XML créé dans WordPress de destination.

Outil d'importation XML pour WordPress

Structure rugueuse

La structure approximative de XML est la suivante.

WordPressインポートツール用のXMLの構造

«Auteur», «catégorie», «terme» correspondent à l'utilisateur, à la catégorie et au terme de WordPress.

ʻItem ne sont pas seulement des articles et des pages, mais également des images et des champs personnalisés ACF sont inclus dans ʻitem.

La valeur du champ personnalisé enregistré dans chaque article est dans postmeta.

Un identifiant est attribué à chacun des «auteur», «catégorie», «terme» et «élément», et il est utilisé pour les relations parent-enfant et pour spécifier les images définies dans l'élément.

Au fait, «l'auteur» semble pouvoir être importé sans lui.

image

L'image est enregistrée comme «élément».

L'URL de l'image est définie comme un élément enfant nommé ʻattachment_url`.

Si vous enregistrez un «élément» qui représente un article en tant qu'élément parent, il sera importé correctement en tant qu'image associée à cet article.

Le champ personnalisé de l'image contient l'ID de l'image définie dans l'élément.

Données de champ personnalisées

Les données du champ personnalisé sont dans postmeta, mais quand il y a un champ de texte nommé" année ", cela ressemble à ceci.

<wp:postmeta>
    <wp:meta_key><![CDATA[year]]></wp:meta_key>
    <wp:meta_value><![CDATA[2015]]></wp:meta_value>
</wp:postmeta>
<wp:postmeta>
    <wp:meta_key><![CDATA[_year]]></wp:meta_key>
    <wp:meta_value><![CDATA[field_5670f2bfd2c5a]]></wp:meta_value>
</wp:postmeta>

Afin de créer du XML pour l'importation, vous devez connaître year et field_5670f2bfd2c5a.

Répéter le champ

Par exemple, s'il y a un champ répétitif appelé ʻimages, et qu'il y a plusieurs champs de texte appelés ʻimage et caption dedans, ce sera postmeta comme indiqué ci-dessous. Le «2» sur la troisième ligne semble contenir le nombre défini d'éléments.

<wp:postmeta>
    <wp:meta_key><![CDATA[images]]></wp:meta_key>
    <wp:meta_value><![CDATA[2]]></wp:meta_value>
</wp:postmeta>
<wp:postmeta>
    <wp:meta_key><![CDATA[_images]]></wp:meta_key>
    <wp:meta_value><![CDATA[field_5670f0d3391f8]]></wp:meta_value>
</wp:postmeta>

<!--Première image-->
<wp:postmeta>
    <wp:meta_key><![CDATA[images_0_image]]></wp:meta_key>
    <wp:meta_value><![CDATA[10]]></wp:meta_value>
</wp:postmeta>
<wp:postmeta>
    <wp:meta_key><![CDATA[_images_0_image]]></wp:meta_key>
    <wp:meta_value><![CDATA[field_5670f2bad2c5a]]></wp:meta_value>
</wp:postmeta>
<wp:postmeta>
    <wp:meta_key><![CDATA[images_0_caption]]></wp:meta_key>
    <wp:meta_value><![CDATA[Image 1]]></wp:meta_value>
</wp:postmeta>
<wp:postmeta>
    <wp:meta_key><![CDATA[_images_0_caption]]></wp:meta_key>
    <wp:meta_value><![CDATA[field_5670f2bfr2c5a]]></wp:meta_value>
</wp:postmeta>

<!--Deuxième image-->
<wp:postmeta>
    <wp:meta_key><![CDATA[images_1_image]]></wp:meta_key>
    <wp:meta_value><![CDATA[11]]></wp:meta_value>
</wp:postmeta>
<wp:postmeta>
    <wp:meta_key><![CDATA[_images_1_image]]></wp:meta_key>
    <wp:meta_value><![CDATA[field_5670f2bad2c5a]]></wp:meta_value>
</wp:postmeta>
<wp:postmeta>
    <wp:meta_key><![CDATA[images_1_caption]]></wp:meta_key>
    <wp:meta_value><![CDATA[Image 2]]></wp:meta_value>
</wp:postmeta>
<wp:postmeta>
    <wp:meta_key><![CDATA[_images_1_caption]]></wp:meta_key>
    <wp:meta_value><![CDATA[field_5670f2bfr2c5a]]></wp:meta_value>
</wp:postmeta>

Lorsque le XML généré n'est pas importé avec succès

Vous pouvez voir le processus d'importation en regardant le code du plug-in * WordPress Import Tool *. Puisqu'il n'y a que 2 fichiers, je pense qu'il est plus rapide d'essayer de mettre le code de débogage dans le code du plug-in * WordPress d'importation * que d'essayer dur par essais et erreurs de XML.

À propos, le processus d'importation ressemble au flux suivant.

  1. Analysez le XML et divisez-le en «auteurs», «catégorie», «terme» et «élément».
  2. Importez chaque
  3. Associer la relation parent-enfant de «article» (association d'articles avec des images, etc.)

ʻItem (probablement catégorie`) contrôle de ne pas importer la même chose en regardant l'ID, donc si vous ne serrez pas correctement l'ID, il ne sera pas importé pour une raison quelconque. .. (accro.)

Bibliothèque de génération XML WordPress pour Python

J'ai publié un script Python que j'ai créé pour travailler sur GitHub, veuillez donc l'utiliser si vous pouvez l'utiliser.

wordpress_importer_util

J'utilise arrow pour le traitement autour de la date, alors mettez-le simplement avec pip install arrow.

ʻExamples / my_wordpress.py` est un exemple de script Python qui génère réellement du XML.

Je n'ai pas essayé «catégorie» et «terme» parce que je ne les ai pas réellement utilisés. Utilisez à vos risques et périls.

Recommended Posts

Migrez vos propres données CMS vers WordPress
Annotez vos propres données pour entraîner Mask R-CNN
Migrer les articles Qiita vers WordPress
Reliez ROS à votre propre protocole
Ajoutez votre propre vue de contenu à mitmproxy
Pour importer votre propre module avec jupyter
Comment installer votre propre autorité de certification (racine)
Vider les données SQLite3 et migrer vers MySQL
Essayez de créer votre propre AWS-SDK avec bash
Comment définir votre propre cible dans Sage
[Pour l'enregistrement] Système d'image Keras Partie 1: Comment créer votre propre ensemble de données?
Entraînez Stanford NER Tagger avec vos propres données
[AWS] Migrer les données de DynamoDB vers Aurora MySQL
Étapes pour installer votre propre bibliothèque avec pip
Mémo pour créer votre propre Box avec le Python de Pepper
Créez votre propre Big Data en Python pour validation
[Introduction à l'application Udemy Python3 +] 66. Création de votre propre exception
Essayez d'améliorer votre propre quiz d'introduction avec Python
Essayez de mettre des LED dans votre propre PC (légèrement)
[Road to Intermediate Python] Définissez dans votre propre classe
Créez votre propre exception
Utilisez gokart pour tester les associations pandas sur votre pipeline de données.
[Ansible] Comment appeler des variables lors de la création de votre propre module
Comment utiliser pyenv et pyenv-virtualenv à votre manière
(Note) Comment passer le chemin de votre propre module
Comment obtenir un aperçu de vos données dans Pandas