web-dev-qa-db-de.com

Aktualisieren Sie die URL ausstehender Posts über phpMyAdmin

Ich muss eine Menge von Posts entfernen/löschen, die über phpMyAdmin ausstehen. Die meisten ausstehenden Posts haben einen Slug/URL, der sich von ihrem Posttitel unterscheidet. Wenn Sie einen Slug/URL löschen, wird WP gezwungen, einen neuen Slug zu generieren, wenn der Post veröffentlicht wird (der dann als Posttitel gilt).

Zu Testzwecken habe ich versucht, Slug manuell aus einigen über phpMyAdmin ausstehenden Posts zu löschen und dann über WP zu veröffentlichen. Aus dem Post-Titel wird ein neuer Slug generiert. Jetzt brauche ich nur noch die SQL-Funktion/Abfrage.

Daher muss ich slug nur aus Beiträgen und nur aus ausstehenden Beiträgen löschen.

Ich denke, es sollte ungefähr so ​​sein:

UPDATE wp_posts SET post_name = '' WHERE post_status = 'pending' AND post_type = 'post';

Könnte das bitte jemand überprüfen (oder bei Bedarf korrigieren)?

1
Advanced SEO

Ein Nachteil der Verwendung dieser SQL-Abfrage besteht darin, dass der Slug nur aktualisiert wird, wenn Sie den Beitrag wirklich bearbeiten. Außerdem kann es zu merkwürdigem Verhalten kommen, wenn ein Plugin versucht, etwas mit einem leeren Slug zu tun.

Eine gute Alternative wäre, stattdessen WP-CLI zu verwenden.

Zunächst benötigen Sie eine Liste aller ausstehenden Posts:

wp post list --post_type=post --post_status=pending --format=ids

Als nächstes benötigen Sie einen Weg, um die Schnecke eines Posts zu entfernen:

wp post update <id> --post_name=""

Jetzt können Sie diese Befehle kombinieren wie folgt vorgehen:

wp post update $(wp post list --post_type=post --post_status=pending --format=ids) --post_name=""

Auf diese Weise wird das Post-Update nicht nur über SQL, sondern über die interne API von WordPress durchgeführt.

2
swissspidy