it-swarm.com.de

Wie kann ich der Tabelle wp_posts eine oder mehrere Spalten hinzufügen?

Ich versuche, WP mit einem anderen Dienst zu synchronisieren, der eine API anbietet, mit der ich das Aktualisieren, Erstellen und Löschen der Tabelle mit meinen Websites verknüpfen kann.

Wenn sie also eine Zeile auf ihrem Server erstellen, aktualisieren oder löschen, erhalte ich Details zu dieser Aktualisierung, einschließlich der Zeilen-ID.

Beim Synchronisieren werden benutzerdefinierte Post-Typen verwendet und entweder eine neue separate Tabelle mit der Beziehung post -> api wie post_id:1 = api_id:53 hinzugefügt.

Oder ändern Sie die wp_posts-Tabelle, indem Sie eine Spalte mit der api_id hinzufügen.

Ich weiß, dass ich eine Metabox hinzufügen kann, die diese als post_meta hinzufügt, aber ich bin mir nicht sicher, wie effektiv das sein wird, und ich bin mir ziemlich sicher, dass die Abfrage bei einer Änderung von wp_posts viel schneller sein wird.

Wie kann ich wp_posts in WordPress ändern? Wenn das nicht möglich ist, sollte ich Meta-Boxen hinzufügen oder eine völlig neue Tabelle nur für die Relation erstellen?

5
Neta Meta

Sie können eine Post-Spalte technisch mit SQL hinzufügen, aber ich würde davor warnen, da Backup-Skripte, Exporte usw. sie wahrscheinlich ignorieren würden.

Stattdessen würde ich den Inhalt als Post-Meta hinzufügen, entweder über ein benutzerdefiniertes Feld oder über PHP mit der Funktion update_post_meta ().

Um einen Beitrag auf der Grundlage des Metas abzurufen, verwenden Sie einfach:

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

oder, um den Wert des API-Schlüssels abzurufen

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

Ich kann nur empfehlen, eine eigene Tabelle für diese Beziehung zu erstellen. Auf diese Weise können Abfragen schneller durchgeführt werden und Sie müssen sich keine Gedanken über die Tabellenstruktur von WordPress machen, die Ihre Arbeit jemals verändert und ruiniert (und möglicherweise Ihre Spalte und all ihre Daten fallen lässt).

Eines ist sicher, Sie werden immer eine ID haben, mit der Sie sich messen können.

EDIT: Könnte auf diese Weise erfolgen, aber post_meta hat einige größere Vorteile.

4
MikeNGarrett

Es hört sich so an, als würden Sie versuchen, Metainformationen zu den Posts zu speichern. WordPress ermöglicht es Ihnen, dies mit seinen Benutzerdefinierten Feldern zu tun. Die Funktionen, die Sie wahrscheinlich am nützlichsten finden, sind update_post_meta() und get_post_meta() .

3
Pat J