web-dev-qa-db-fra.com

Comment exporter et importer des taxonomies (taxonomie de catégorie, balises et/ou personnalisation) et leurs termes

Je souhaite exporter toutes les catégories Wordpress (pas de publications, mais uniquement des catégories) d'un blog à un autre Comment puis je faire ça ?

10
chubbyk

Cette réponse est essentiellement la même que celle d'Ünsal, mais je voudrais élaborer un peu car, même s'il a raison, sa réponse ne m'a pas aidé (j'essayais simplement de me rappeler ce que j'avais fait dans le passé, j'aurais dû lire son plus soigneusement et j'aurais compris, mais je pense que pour d'autres une description complète serait utile).

Pour exporter la hiérarchie complète des catégories, vous devez exporter "Tout le contenu"

Toute autre option ne vous donnera pas les données complètes (par exemple, exporter un article avec toutes les catégories marquées fonctionne généralement, mais vous perdez toutes les données de parenté/hiérarchie sur les taxonomies hiérarchiques).

Lorsque vous exportez "Tout le contenu", le fichier résultant contient une section contenant des données sur vos termes. Si vous parcourez le fichier, il devrait être assez facile de trouver, après les auteurs et avant les "éléments" (c'est-à-dire les articles).

Vous pouvez simplement importer ceci et supprimer du contenu si c'est une option *

L'importation du fichier complet reproduira parfaitement la hiérarchie de la taxonomie, mais importera évidemment toutes les pages et tous les articles. S'il n'y en a pas beaucoup, envisagez simplement de les supprimer à la main. Cela ne prendra pas beaucoup de temps si vous le faites en vrac et qu'il y en a moins de centaines (rappelez-vous que vous pouvez utiliser les Options d'écran sur l'écran Modifier les messages pour afficher plus que la valeur par défaut et donc en modifier davantage à la fois).

Si vous avez trop de contenu pour tout supprimer, vous devez éditer le fichier WXR à la main pour tout supprimer, sauf les termes que vous souhaitez conserver.

Modification du fichier WXR pour supprimer du contenu

Cela peut être un peu délicat, mais si vous examinez le contenu du fichier, il n’est pas si difficile de comprendre ce que fait chaque élément. XML est comme HTML avec des balises, la principale chose à faire est de ne pas supprimer une balise de fermeture tout en laissant la balise d'ouverture, etc.

Vous constaterez qu'il existe 1 à 3 types de définitions de termes dans le rapport WXR, un type pour les catégories, un pour les "tags" et l'autre pour les "termes". Les "taxonomies personnalisées" utilisent des termes, tandis que les catégories et les balises à l'ancienne ont leur propre format.

EXEMPLE DE CATÉGORIE

<wp:category><wp:term_id>8880</wp:term_id><wp:category_nicename>runner-up-proposals</wp:category_nicename><wp:category_parent>second-round-proposals</wp:category_parent><wp:cat_name><![CDATA[Runner-up Proposals]]></wp:cat_name></wp:category>

EXEMPLE DE TAG

<wp:tag><wp:term_id>122</wp:term_id><wp:tag_slug>ave-maria</wp:tag_slug><wp:tag_name><![CDATA[Ave Maria]]></wp:tag_name></wp:tag>

EXEMPLE DE TERME DE TAXONOMIE PERSONNALISÉ

<wp:term><wp:term_id>8579</wp:term_id><wp:term_taxonomy>gv_tools</wp:term_taxonomy><wp:term_slug>digital-video</wp:term_slug><wp:term_parent></wp:term_parent><wp:term_name><![CDATA[Digital Video]]></wp:term_name></wp:term>

Donc, ce que vous voulez faire est de supprimer tout le contenu autre que ces balises category/tag/term du fichier WXR. À savoir wp: les balises d'auteur qui précèdent et les nombreuses balises d'items qui suivent. Plus important encore: Ne supprimez pas les balises de fermeture/channel et/rss en bas! Sans eux, le XML ne sera pas validé.

ÉVIDEMMENTvous allez tester les résultats de l’importation de votre fichier édité avant de l’utiliser sur un site Web actif. Essayez de l'importer localement dans une nouvelle installation et vérifiez si elle échoue complètement, puis vérifiez l'écran de liste des catégories dans wp-admin et assurez-vous que tout est conforme à vos attentes.

Bonne chance!

4
jerclarke

J'ai résolu ce problème avec 2 requêtes.

Ce n'est pas la meilleure façon, je suppose, mais pas le le plus sûr . De plus, cela suppose que vous travaillez sur la même base de données (si ce n’est pas le cas, vous pouvez facilement exporter la requête puis l’importer dans une autre base de données).

Je l'ai utilisé sur une installation empty wordpress:

1 - Importer les termes de la catégorie:

INSERT INTO newwp_terms
SELECT te.*
  FROM oldwp_terms te
  JOIN oldwp_term_taxonomy ta
    ON te.term_id = ta.term_id
 WHERE ta.taxonomy = 'category'
 ;

2 - Importer les relations et les descriptions des catégories

INSERT INTO newwp_term_taxonomy
SELECT term_taxonomy_id,term_id,taxonomy,description,parent,0
  FROM oldwp_term_taxonomy ta
  WHERE ta.term_taxonomy_id IN
          (
           SELECT ta2.term_taxonomy_id
             FROM oldwp_terms te
             JOIN oldwp_term_taxonomy ta2
               ON te.term_id = ta2.term_id
            WHERE ta.taxonomy = 'category'
         )
  ;

[A] nyway newwp_ fait référence à la table dans laquelle vous voulez importer tandis que oldwp_ fait référence à la table source

4
Dalen

Quel est votre objectif final ici? Juste pour obtenir une liste de catégories d'un blog à un autre? Ou essayez-vous de déplacer tout le contenu dans une ou plusieurs catégories vers une autre installation WordPress?

C'est un peu moche, mais vous pouvez exporter tout le contenu, puis simplement supprimer le contenu dans les catégories ou supprimer les catégories que vous ne voulez pas. Ce serait probablement l'un des moyens les plus rapides d'atteindre votre objectif.

2
tollmanz

Vous ne pouvez pas exporter que des catégories (ou des taxonomies en général). Exportez simplement tout le contenu avec Outils/Exporter et vous pouvez supprimer du contenu sauf les catégories de xml.

2
Ünsal Korkmaz

Si vous avez accès aux tables de base de données, vous pouvez effectuer une exportation de vidage mysql des tables wp_term_relationships, wp_term_taxonomy, wp_terms et les importer dans la nouvelle installation de wordpress. Je viens de faire cela entre deux WP avec plus de 300 catégories et cela a bien fonctionné.

1
Rocco The Taco