Comment récupérer plusieurs années de publications hébergées sur Tumblr, quand aucune extension WordPress dédiée à ce format spécifique n’est disponible sur le répertoire officiel ? Le format d’export propriétaire de Tumblr ne correspond à aucun des formats reconnus nativement par l’outil d’import de WordPress, qui couvre WordPress lui-même, Blogger ou des flux au format standard, mais pas ce cas précis.
La solution la plus fiable consiste à passer directement par l’API publique de Tumblr, qui expose chaque publication sous une forme structurée exploitable par un script PHP, puis à recréer chaque contenu dans WordPress avec wp_insert_post(), en respectant autant que possible le type d’origine de chaque publication.
Récupérer les publications via l’API publique de Tumblr
L’API de Tumblr expose un point d’accès public qui renvoie les publications d’un blog au format JSON, sans authentification pour un blog dont le contenu est public. Un script PHP exécuté en ligne de commande, ou intégré temporairement à un fichier du thème, peut interroger cette API par lots successifs et enregistrer les résultats bruts avant tout traitement :
$reponse = wp_remote_get(
'https://api.tumblr.com/v2/blog/monblog.tumblr.com/posts?api_key=CLE_API&limit=20&offset=0'
);
$donnees = json_decode( wp_remote_retrieve_body( $reponse ), true );
Chaque publication renvoyée contient un champ type qui distingue les publications textuelles, les photos, les citations, les liens, les extraits audio, les vidéos et les conversations, sept formes de contenu qui n’ont pas d’équivalent unique dans un article WordPress standard.
Recréer chaque publication avec wp_insert_post()
Une fois les données récupérées, chaque publication est recréée via wp_insert_post(), avec un mappage du type Tumblr vers un format de publication WordPress ou une simple structure HTML adaptée :
$id_article = wp_insert_post( [
'post_title' => $publication['title'] ?? '',
'post_content' => $contenu_html,
'post_date' => date( 'Y-m-d H:i:s', $publication['timestamp'] ),
'post_status' => 'publish',
] );
if ( $id_article && 'photo' === $publication['type'] ) {
set_post_format( $id_article, 'image' );
}

Ce que le mappage doit préserver, publication par publication
Une conversion trop rapide, qui transforme toutes les publications en simples articles de blog identiques, fait perdre une partie du sens éditorial d’origine. Une citation Tumblr, par exemple, gagne à être recréée avec une balise <blockquote> plutôt qu’un simple paragraphe, tandis qu’une publication de type lien mérite de conserver l’URL d’origine sous forme de bouton visible plutôt que noyée dans le texte.
| Type Tumblr | Traitement recommandé côté WordPress |
|---|---|
| text | Article standard, contenu HTML conservé tel quel |
| photo | Article avec image téléchargée et associée en image mise en avant |
| quote | Contenu enveloppé dans une balise blockquote |
| link | URL d’origine conservée en évidence dans le contenu |
| audio / video | Fichier média téléchargé si les droits le permettent, sinon lien conservé |
Télécharger les médias associés plutôt que de dépendre de Tumblr
Les images et fichiers audio référencés dans les publications Tumblr restent hébergés sur les serveurs de Tumblr tant qu’ils ne sont pas explicitement récupérés. La fonction media_sideload_image(), disponible dans le cœur de WordPress, permet de télécharger une image distante et de l’ajouter directement à la médiathèque du site, en l’associant à l’article correspondant, ce qui évite une dépendance permanente envers un service tiers pour l’affichage du contenu migré.
Un import de contenu qui laisse les médias sur la plateforme d’origine n’est jamais une migration complète : le jour où cette plateforme change ses règles d’accès, les images disparaissent silencieusement du site.
Adapter le thème classique aux formats retrouvés
Un thème classique qui reçoit ce contenu migré gagne à déclarer explicitement le support des formats de publication concernés, avec add_theme_support( 'post-formats', [ 'image', 'quote', 'link', 'audio', 'video' ] ), puis à prévoir un gabarit content-{format}.php distinct pour chacun, plutôt que d’afficher toutes les publications avec un seul gabarit générique qui gommerait les différences retranscrites depuis Tumblr.
En résumé
L’absence d’extension d’import dédiée à un format propriétaire ne bloque pas la migration : l’API publique de Tumblr, combinée à wp_insert_post() et à un mappage soigné des types de publications, permet de reconstituer un historique de contenu fidèle à sa forme d’origine. Le travail le plus long ne se situe pas dans la récupération des données, mais dans la préservation du sens éditorial propre à chaque type de publication d’origine.