A GUID (globally unique identifier) is a number or name that is completely unique to the item it represents. For example, in book publishing, they are known as ISBNs ( International Standard Book Number); in the product world, they are UPCs (Universal Product Codes).
In WordPress RSS feeds, the GUID for each post is (usually) its “ugly” link, such as “https://www.wordher.com?p=2678”. This makes a lot of sense, since in all the world, a post’s URL (whether pretty or not) is completely unique. The URL used in a WordPress GUID is not the permalink, however. For example, if you change the permalink of a post, the GUID does not change. This means that GUIDs do not change when you modify a post’s slug, change the site’s permalink structure, move to a new domain name, or switch your protocol to HTTPS.
The purpose of the GUID in the RSS feed is to be unique, so that RSS feed readers (and other software that processes feeds) can tell whether the item has been processed. In simple terms, it keeps your human readers from seeing duplicate posts.Purpose of the GUID in #WordPress RSS feeds to is be unique, so feed readers don't publish dupes.Click To Tweet
If you do change a post’s GUID (accidentally or otherwise) you risk angering your site’s RSS feed readers, as the modified GUID will indicate a brand new (totally unique!) post. And this totally unique post will be re-sent to all your RSS readers. And if you also use your RSS feed as a source for publishing to an email newsletter, Facebook and Twitter, these channels will also receive all your posts as if they were new again. (By the way, you should be using your RSS feed to automatically publish a newsletter, Twitter tweets, and Facebook posts.) Not a nice way to treat your loyal readers, and in fact, is a sure way to annoy quite a few of them.
This mistake is most commonly made when doing a generic search-and-replace (either via a plugin that doesn’t know any better, or directly on the database) when moving to a new domain, or switching to HTTPS protocol. It is best practice to not update GUIDs, unless you moving a brand new site from a staging domain to a production domain.
If you have mad WP-CLI skills, and are doing a search-and-replace on your domain name, you can use the skip-columns flag to ignore the GUID field as follows:
Here is what the GUID looks like in a WordPress RSS feed.