Question

Je cherche à faire une importation personnalisée à partir d'un CMS personnalisé à wordpress. En regardant les fichiers d'import / export dans wordpress, je peux obtenir match le plus de la structure. Cependant, il manque les relations de taxonomies personnalisées et messages lors de l'exportation / importation.

Y at-il un correctif pour ce ou serait-il plus facile de ne pas utiliser le script d'importation de wordpress? Au contraire, SQL écriture personnalisée pour gérer tout cela.

En outre, comme je développe ce nouveau site le contenu de l'ancien site (CMS sur mesure) est toujours mis à jour. Il y aura un gel quelques jours avant le lancement, où je peux faire une autre décharge db et réimportation. Bien que, la question que je suis est que je pressentant aurai besoin de supprimer tous les messages et les relations et réimporter le contenu. Est-il un moyen facile de supprimer tous les messages et les relations pour éviter les doublons et réimporter le contenu?

Était-ce utile?

La solution

Il ne devrait pas être difficile d'ajouter la gestion des types de postes personnalisés ou taxonomies dans un importateur personnalisé pour WordPress. Vous aurez juste besoin de vous assurer que vos types de postes personnalisés et taxonomies sont enregistrés avant l'exécution de l'importateur. Une fois enregistré, vous pouvez utiliser wp_insert_post () et wp_set_object_terms () sur ces types personnalisés. Ce sera probablement finir par être une solution beaucoup mieux que d'essayer de SQL écriture personnalisée comme il remplit beaucoup de champs supplémentaires qui ne sont pas toujours évidentes, comme chefs d'objet terme, etc.

Chaque fois que je travaille sur un script pour importer des données d'un autre système, je l'ai toujours créé des fonctions Nuke, pour la raison que vous avez mentionné, et juste parce que l'importation de données est toujours un tas d'essais et d'erreurs. La fonction généralement constitué seulement d'une seule boucle d'appeler wp_delete_post () pour chaque poste. Selon l'importation, je peux aussi ajouter un autre à l'appel wp_delete_term () sur chaque terme dans la base de données.

$post_ids = $wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE post_type in ('post', 'attachment', [...other post types])");
foreach($post_ids as $post_id) {
    wp_delete_post($post_id, true);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top