web-dev-qa-db-fra.com

Mettre à jour le slug (URL) des publications en attente via phpMyAdmin

J'ai besoin de supprimer/supprimer slug de messages en attente via phpMyAdmin. La plupart des publications en attente ont un slug/URL qui diffère de leur titre, la suppression de post slug/URL obligera WP à générer une nouvelle slug lors de la publication de la publication (qui deviendra alors le titre du message).

Juste pour le test, j'ai essayé manuellement de supprimer slug de certains messages en attente via phpMyAdmin, puis de le publier via WP, et un nouveau slug est généré à partir du titre de l'article. Maintenant, j'ai juste besoin d'une fonction/requête SQL pour cela.

Donc, je dois supprimer slug uniquement des publications et uniquement des publications en attente.

Je pense que ça devrait être quelque chose comme ça:

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

Quelqu'un pourrait-il vérifier cela s'il vous plaît (ou le réparer si nécessaire)?

1
Advanced SEO

Un inconvénient de cette requête SQL est que le slug ne sera mis à jour que lorsque vous allez réellement éditer le message. De plus, cela peut provoquer un comportement étrange lorsqu'un plugin tente de faire quelque chose avec un slug vide.

Une bonne alternative serait d'utiliser WP-CLI à la place.

Tout d'abord, vous aurez besoin d'une liste de tous les messages en attente:

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

Ensuite, vous avez besoin d’un moyen de supprimer le slug d’un message:

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

Vous pouvez maintenant combiner ces commandes comme ceci:

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

De cette façon, la post-mise à jour se fera via l'API interne de WordPress au lieu de SQL uniquement.

2
swissspidy