WordPress & SQL: Hinzufügen eines benutzerdefinierten Felds zu allen Beiträgen

Lesezeit: 2 Minuten

Ich brauche eine SQL-Abfrage, die ich in PHPmyadmin ausführen kann und die allen vorhandenen Beiträgen ein benutzerdefiniertes Feld (mit einem Wert) hinzufügt. Kann jemand helfen? Ist das überhaupt möglich?

Benutzer-Avatar
windyjonas

Sie können dies tun, indem Sie mithilfe einer Auswahlabfrage in der Posts-Tabelle in die Postmeta-Tabelle einfügen.

Im folgenden Beispiel verwende ich wp_ als Tabellenpräfix, Ihr Setup kann abweichen.

insert into wp_postmeta (post_id, meta_key, meta_value) 
select ID, 'my-key', 'my-value' from wp_posts where post_type="post";

  • funktioniert. Danke! Gibt es eine Möglichkeit, zu überprüfen, ob der Metaschlüssel vorhanden ist, damit ich keine Duplikate hinzufüge?

    – Alex

    30. Juni 2010 um 0:04 Uhr

  • Hat perfekt funktioniert. Ich wollte nur ein kleines Update hinzufügen, da diese Anweisung das Postmeta für jedes einzelne Element einschließlich Anhängen, Seiten usw. hinzufügt. Ich habe am Ende eine WHERE-Anweisung hinzugefügt, damit nur der Schlüssel für Beiträge hinzugefügt wird: insert into wp_postmeta (post_id, meta_key, meta_value) select ID, 'my-key', 'my-value' from wp_posts WHERE post_type = 'post'

    – Waffel

    26. Mai 2011 um 16:20 Uhr

Benutzer-Avatar
John P. Bloch

Ja, das ist möglich, aber nicht ratsam. Ihre Daten könnten beim nächsten Upgrade verloren gehen. Wenn Sie kein Upgrade planen, hinterlassen Sie klaffende Sicherheitslücken auf Ihrer Website. Der empfohlene Weg, dies zu tun, ist die Verwendung der Postmeta-Tabelle. Dafür existiert es.

BEARBEITEN

Jetzt, da ich die Frage besser verstehe, ignorieren Sie den obigen Teil. Siehe Kommentare für weitere Details.

  • Ich habe deine Antwort nicht bewertet. Ich habe hier kein Konto, also kann ich das sowieso nicht tun 🙂

    – Alex

    29. Juni 2010 um 15:31 Uhr

  • Ich denke, Alex meint, wie kann er benutzerdefinierte WordPress-Felder erstellen (die die postmeta table) mit SQL, anstatt wie kann er der posts-Tabelle neue Spalten hinzufügen (so wie Sie es anscheinend interpretiert haben, John). Die Ablehnung scheint jedoch lieblos zu sein. Was Ihre Frage angeht, Alex, ich glaube nicht, dass Sie dies mit einer einzigen SQL-Anweisung tun können. Sie müssten alle Post-IDs abrufen und dann eine Zeile hinzufügen postmeta Tabelle für jeden Beitrag, die Ihre benutzerdefinierten Felddaten enthält.

    –Richard M

    29. Juni 2010 um 16:07 Uhr


  • Ah. Ich glaube, Sie haben recht, Richard. FWIW, Alex, ich hätte nie gedacht, dass du es abgelehnt hättest. Im Allgemeinen sind Personen, die Fragen stellen, daran interessiert, die Antwort zu finden, und kommunizieren, bevor sie ablehnen. Das ‘du’ in meinem Kommentar sollte alles unpersönliche Pronomen sein.

    – John P. Bloch

    29. Juni 2010 um 16:53 Uhr

  • Richard hat Recht. Es scheint keine Möglichkeit zu geben, SQL dafür zu verwenden. Ich würde vorschlagen, ein Plugin-Skript zu verwenden, das aus dem Admin-Bereich ausgeführt werden kann, um das zu tun, was Richard vorgeschlagen hat.

    – John P. Bloch

    29. Juni 2010 um 16:54 Uhr

1383730cookie-checkWordPress & SQL: Hinzufügen eines benutzerdefinierten Felds zu allen Beiträgen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy