web-dev-qa-db-fra.com

Organiser WP Pages basées sur une ancienne base de données de site Web

Je déplace des données existantes impliquant des peintures d'un ancien hôte qui n'utilisait pas WordPress vers un nouvel hôte qui le fait.

Avec l'ancien site, les données étaient stockées dans une base de données, de sorte que chaque tableau possédait sa propre page avec des informations (artiste, nom, année, style, etc.) et le support le concernant. Les pages pouvaient ensuite être recherchées par les différentes informations ( année similaire, artiste, etc)

Avec WordPress, existe-t-il un moyen d'utiliser mon ancienne base de données pour générer automatiquement des pages/publications pouvant être triées de cette manière?

3
LordTakason

Avant d'entrer dans Importing , je voudrais vous familiariser avec les types type de publication standard et post_meta ainsi que types de publication personnalisée et taxonomies Si votre objectif final en tire parti, vous éviterez bien des maux de tête en les utilisant lors de la préparation de l'importation.


Si vous préférez travailler directement avec la base de données, un vidage/conversion/importation est toujours possible, bien sûr. Le schéma ci-joint répondrait à toutes vos questions.

Une autre option, dans la perspective de l'importateur, serait d'envoyer des publications de l'ancien site aux points de terminaison wp-json api du site wordpress et de gérer la migration de cette façon.

Comme @Rarst mentionné, il n'y a pas vraiment de raccourci, mais comme @Max a noté dans son commentaire que l'importateur peut au moins vous aider dans le processus du côté Wordpress.

Le paragraphe ci-dessous décrit et consolide les liens entre ces points.

Utilisation de Wordpress Importer (Outils> Importer)

Il existe une multitude d'options (et une multitude encore plus d'éléments à prendre en compte avant d'utiliser l'une d'elles) pour importer du contenu dans WordPress. Ce serait la méthode la plus sûre à prendre. Vous pouvez vous familiariser avec beaucoup d’entre eux ici: Importer du contenu dans Wordpress

Comprenant:

  • Blogger
  • Drupal
  • Tableur Excel/CSV/XML/JSON
  • Google Blog Converters
  • Joomla
  • LiveJournal
  • Magento
  • Mambo
  • Type mobile
  • Nucleus CMS
  • Plone
  • Posterous
  • SPIP
  • Tumblr
  • Gazouillement
  • TypePad
  • etc, etc, vous obtenez le point

Cette page répertorie également divers plug-in permettant d'importer une exportation d'une précédente cms (plusieurs types répertoriés).

CSV, XML, RSS ... de toute manière. Vous devrez bien sûr créer le fichier à traiter.


Transfert de base de données> Importer

(Sans connaître aucune information sur la base de données actuelle), vous pouvez vider l'ancien contenu de la base de données pages, et le convertir en une importation SQL. N'envisage même pas cela si tu ne sais pas vraiment ce que tu fais, cependant. Vous pourriez sérieusement gâcher les choses. Mais une option viable si vous êtes à l'aise avec cela.

Je ne considérerais pas cela comme une solution de {wordpress}, mais je le notais simplement comme une approche.


Importer un pont avec l'API WP-JSON

Si vous avez toujours accès à l'ancienne base de données/site, vous pouvez utiliser wp-json api en écrivant quelque chose de votre côté qui posts sur le point de terminaison approprié sous wordpress pour chaque entrée de votre ancienne base de données.

Vous pouvez normalement construire ceci pour garder les choses synchronisées, mais cela pourrait aussi fonctionner comme un outil d'importation ponctuel.


Développant ceci au lieu des questions supplémentaires d'OP dans les commentaires:

Tout d'abord, vous voudrez créer un signet cette ressource permettant de traiter avec la classe WP_REST_request

En supposant que nous ayons écrit un peu de code sur le ancien site qui saisit le contenu pertinent et le place dans un objet POST formaté, et en supposant un point de terminaison personnalisé:

[Old Site Data ] POST http pour router http://new-WP-site.com/wp-json/v2/plugin_namespace/v1/posts/

Sur le WP end, /plugin_namespace/v1/posts/ nous créerions. Pour que cela se produise, nous avons d'abord extend la classe WP_REST_Controller.

Ensuite, dans notre classe, nous enregistrons nos itinéraires en utilisant register_rest_routes(). Quelque chose comme:

public function __construct() {
        add_action( 'rest_api_init', array($this, 'register_routes' ) );
    }//end __construct

public function register_routes() {
        $version = '1';
        $namespace = 'plugin_namespace/v' . $version; 
        $base = 'posts';
        register_rest_route( $namespace, '/'. $base, array(
            array(
                'methods' => 'GET',
                'callback' => array( $this, 'this_is_a_callback_function' ),
                //'permission_callback' => array( $this, 'key_permissions_check' ),
                ),
            array(
                'methods' => 'POST',
                'callback' => array( $this, 'this_is_a_callback_function' ),
                //'permission_callback' => array( $this, 'key_permissions_check' ),
                ),)
        );

    }//register_routes
    public function this_is_a_callback_function(WP_REST_Request $request) {

        //if posted in body like form data
        $posted_data = $request->get_body_params();

    }

De ce point, $posted_data a ce qui était POSTed et vous pouvez le parcourir ou le transmettre à une autre fonction qui le fait.

Cette fonction aurait besoin de construire le post_array à partir de chaque entrée et de le transmettre à wp_insert_post()

Une approche pourrait également être utilisée en utilisant WP_REST_Server::CREATABLE à la place de methods => POST. Le mien est juste un exemple rapide/incomplet.

Aussi, j'ai commenté le permissions_callbacks, mais cette fonction de rappel est l'endroit où vos vérifications d'autorisation iraient normalement.

Notez que wp_insert_post() vous permettra également de transmettre un tableau de méta, mais pas wp_update_post. wp_insert_post requiert également une valeur title et content. Si vous transmettez un ID autre que 0, il exécutera wp_upate_post.

Vous pouvez envisager d'utiliser quelque chose comme requestb.in en triant votre code ancien site pour vérifier ce qu'il envoie, et facteur fonctionne assez bien pour vérifier la réponse de l'API .

Comme je l'ai mentionné dans les commentaires, ngrok pourrait être utilisé pour effectuer complètement la migration non-wp à wp dans un environnement de développement.

Espérons que cela vous donne assez d’informations pour les traduire à qui vous voulez.


Pertinents WP Tables (posts)

Que vous construisiez une importation SQL ou écriviez un autre pont, pour posts , les tables à mapper sur la fin du wordpress seraient:

Nom de la table : Données de la table

wp_posts: les posts

wp_postmeta: poster des méta-valeurs

wp_term_relationships: publications dans les taxonomies

wp_term_taxonomy: taxonomies

wp_terms: valeurs de tag et de catégorie

Voici le schéma complet de la base de donnéesenter image description here

2
hwl

Vous pourriez utilisez une règle de réécriture personnalisée de sorte que WP interprète les URL spécifiques à appeler et présente les données de l'ancienne base de données. Cependant, voulez-vous continuer à gérer les données dans l'ancienne base de données? Comme dans create/link WP interface d'administration pour sauvegarder des données d'une manière qui lui soit étrangère? À ce stade, vous écrivez votre propre CMS à côté de WP.

À mon avis, si WP devient un nouveau moyen canonique d’accéder à ces données et de les gérer, la meilleure approche consiste à les migrer correctement dans les structures de données appropriées WP.

Bien sûr, les circonstances étant prudentes, vous pouvez éventuellement, en fonction des besoins, conserver les anciennes fonctionnalités et données et les intégrer/redéfinir le thème/skin dans le même site WP.

En résumé, plus WP sera chargé de le faire, plus il sera judicieux d’envisager une migration complète.

1
Rarst