web-dev-qa-db-fra.com

Comment puis-je ajouter une colonne/s à la table wp_posts?

J'essaie de synchroniser WP avec un autre service proposant une API qui me permet de connecter les tables Update, Create, Delete à leurs sites.

Ainsi, lorsqu'ils créent, mettent à jour ou suppriment une ligne sur leur serveur, j'obtiens des détails sur cette mise à jour, y compris l'ID de la ligne.

Je pense que la synchronisation consiste à utiliser des types de publication personnalisés et à ajouter une nouvelle table séparée avec une relation post -> api telle que post_id:1 = api_id:53.

Ou modifiez la table wp_posts en ajoutant une colonne contenant le api_id.

Je sais que je peux ajouter metabox, ce qui ajoutera cela comme post_meta, mais je ne suis pas sûr de son efficacité et je suis à peu près sûr que si je modifie wp_posts, les requêtes seront beaucoup plus rapides.

Alors, comment puis-je modifier wp_posts à la manière WordPress? Si ce n'est pas possible, dois-je ajouter des méta-boîtes ou créer une table entièrement nouvelle juste pour la relation?

5
Neta Meta

Vous pouvez techniquement ajouter une colonne de publication avec SQL, mais je vous le déconseille, car les scripts de sauvegarde, les exportations, etc. l'ignoreraient probablement.

Au lieu de cela, j'ajouterais le contenu sous forme de post_meta, soit en utilisant un champ personnalisé, soit via PHP avec la fonction update_post_meta ().

Pour récupérer une publication basée sur la méta, utilisez simplement:

$args = array(
        'post_type' => 'custom_post_type',
        'meta_key' => 'api',
        'meta_value' => $api_value,
      );
$posts = get_posts( $args )

ou, pour récupérer la valeur de la clé API

get_post_meta( $post_ID, 'api', true );
6
Christopher Ross

Je recommanderais fortement de créer votre propre table juste pour cette relation. De cette façon, les requêtes peuvent être plus rapides et vous n’aurez plus à vous soucier de la structure de la table de WordPress qui ne cesse de modifier et de ruiner votre travail (et éventuellement de supprimer votre colonne et toutes ses données).

Une chose est sûre, vous aurez toujours un identifiant à utiliser.

EDIT: Pourrait être fait de cette façon, mais post_meta présente des avantages plus importants.

4
MikeNGarrett

On dirait que vous essayez de stocker des méta-informations sur les publications. WordPress vous permet de faire cela en utilisant son Champs personnalisés . Les fonctions que vous trouverez probablement les plus utiles sont update_post_meta() et get_post_meta() .

3
Pat J