Skip to content

Instantly share code, notes, and snippets.

@PatelUtkarsh
Created April 24, 2024 10:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PatelUtkarsh/855ae8eca738511eecf6466dae9befe7 to your computer and use it in GitHub Desktop.
Save PatelUtkarsh/855ae8eca738511eecf6466dae9befe7 to your computer and use it in GitHub Desktop.
Clean tags with zero count on multisite
#!/bin/bash
# Get all blog ids
blog_ids=$(wp site list --field=blog_id)
# Loop through each blog id
for blog_id in $blog_ids
do
if [ "$blog_id" -eq 1 ]; then
continue
fi
wp term recount post_tag --url=$(wp site url $blog_id) --skip-plugins --skip-themes
# Get all unused tags for the current blog
unused_tags=$(wp db query "SELECT term_taxonomy_id FROM wp_${blog_id}_term_taxonomy WHERE taxonomy = 'post_tag' AND count = 0" --skip-plugins --skip-themes --silent)
# If there are unused tags, delete them
if [ ! -z "$unused_tags" ]; then
# Convert the list of unused tags to a comma-separated string
unused_tags_comma_separated=$(echo $unused_tags | tr ' ' ',')
echo "Cleaning up $unused_tags_comma_separated from $blog_id"
wp db query "DELETE FROM wp_${blog_id}_term_relationships WHERE term_taxonomy_id IN ($unused_tags_comma_separated)" --skip-plugins --skip-themes
wp db query "DELETE FROM wp_${blog_id}_term_taxonomy WHERE term_taxonomy_id IN ($unused_tags_comma_separated)" --skip-plugins --skip-themes
wp db query "DELETE FROM wp_${blog_id}_termmeta WHERE term_id IN ($unused_tags_comma_separated)" --skip-plugins --skip-themes
wp db query "DELETE FROM wp_${blog_id}_terms WHERE term_id IN ($unused_tags_comma_separated)" --skip-plugins --skip-themes
sleep 2
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment