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?
WordPress & SQL: Hinzufügen eines benutzerdefinierten Felds zu allen Beiträgen
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
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ügenpostmeta
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