Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: handle user nicename change #3725

Merged
merged 3 commits into from
Feb 10, 2025
Merged

feat: handle user nicename change #3725

merged 3 commits into from
Feb 10, 2025

Conversation

leogermani
Copy link
Contributor

@leogermani leogermani commented Feb 4, 2025

All Submissions:

Changes proposed in this Pull Request:

This PR adds some special handling to allow for a safe change of a user's nicename.

User nicename is used to build the user author archive URL, and it's also what CoAuthors Plus use to create the taxonomy that handles posts authorship.

With this PR, when a user_nicename changes:

  • It stores the old nicename as user meta
  • It changes the taxonomy term used by CAP (author)
  • It redirects visits to the old user archive page to the new one

How to test the changes in this Pull Request:

  1. Activate CoAuthors Plus
  2. Set up a user with a few posts (both as the only author and as a secondary author)
  3. Visit the author archive page
  4. Change the user nicename to something else: wp newspack nicename-change <user_id> <new_nicename>
  5. Refresh the page and confirm you get redirected to the new URL, with the new nicename, and the same authors show up

Test check nicename

  1. Run wp newspack nicename-check <nicename> with a username you know is in use and confirm you see the appropriate output
  2. with CAP active, run the same command using a term slug that exists, with and without the cap prefix. For example, if you know cap-joe exists, run wp newspack nicename-check joe and wp newspack nicename-check cap-joe.

Other information:

  • Have you added an explanation of what your changes do and why you'd like us to include them?
  • Have you written new tests for your changes, as applicable?
  • Have you successfully ran tests with your changes locally?

@leogermani leogermani requested a review from a team as a code owner February 4, 2025 21:27
@leogermani leogermani self-assigned this Feb 4, 2025
@leogermani leogermani added [Status] Needs Review The issue or pull request needs to be reviewed and removed [Status] Needs Review The issue or pull request needs to be reviewed labels Feb 4, 2025
@leogermani
Copy link
Contributor Author

Just found an edge case.

If the term slug we want to rename the term to already exists, the script will fail to change the term slug and the posts will no longer be assigned to the user.

This will only happen in a broken database... but that's the kind of database where we want to use this tool

@dkoo dkoo added the [Status] Needs Review The issue or pull request needs to be reviewed label Feb 6, 2025
@leogermani leogermani removed the [Status] Needs Review The issue or pull request needs to be reviewed label Feb 6, 2025
Copy link
Contributor

@dkoo dkoo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Works as described!

@github-actions github-actions bot added the [Status] Approved The pull request has been reviewed and is ready to merge label Feb 6, 2025
@leogermani
Copy link
Contributor Author

Sorry @dkoo . I removed the Needs review label because I wanted to make some adjustments... I added it back again now.

The CLI will now check the availability of the nicename, including looking for CAP terms, before doing anything.

WP will already do it for the nicename itself, and add a suffix to avoid conflict, but it ignores the CAP terms... so I added this check

Copy link
Contributor

@dkoo dkoo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-tested and it still works! Good call on adding the checks for preexisting nicenames.

@leogermani leogermani merged commit cb045a3 into trunk Feb 10, 2025
8 checks passed
Copy link

Hey @leogermani, good job getting this PR merged! 🎉

Now, the needs-changelog label has been added to it.

Please check if this PR needs to be included in the "Upcoming Changes" and "Release Notes" doc. If it doesn't, simply remove the label.

If it does, please add an entry to our shared document, with screenshots and testing instructions if applicable, then remove the label.

Thank you! ❤️

@leogermani leogermani mentioned this pull request Feb 10, 2025
6 tasks
matticbot pushed a commit that referenced this pull request Feb 20, 2025
# [6.0.0-alpha.1](v5.14.2...v6.0.0-alpha.1) (2025-02-20)

### Bug Fixes

* **campaigns:** remove placeholder Analytics admin page ([#3729](#3729)) ([abd1bc2](abd1bc2))
* **corrections:** address feedbacks on improving code ([b84fab2](b84fab2))
* **corrections:** improve code formatting ([11ed58c](11ed58c))
* **donations:** handle trashed products and avoid creating dupes ([#3760](#3760)) ([5e78832](5e78832))
* **esp-sync:** transform outgoing dates to site timzeone ([#3728](#3728)) ([77dc361](77dc361))
* **perfmatters:** default for lazyload img setting parent selector ([#3753](#3753)) ([491e335](491e335))
* **recaptcha:** improvements for reCAPTCHA v2 + modal checkout ([#3692](#3692)) ([c4738a7](c4738a7))
* **recaptcha:** no need to scroll to top when showing v2 widget ([#3741](#3741)) ([882d55c](882d55c))
* **woocommerce:** add team name to checkouts for memberships-for-teams ([#3752](#3752)) ([e3661c6](e3661c6))

### Features

* **corrections-modal:** refactor corrections admin UI ([0adac63](0adac63))
* **corrections:** add date handling to corrections and enhance UI ([4c77020](4c77020))
* **corrections:** add site timezone handling logic for correction date ([28d3bb9](28d3bb9))
* **corrections:** update style of modal in the editor ([#3766](#3766)) ([0aee542](0aee542))
* **esp-sync:** queue data events sync to run once ([#3661](#3661)) ([dd2b499](dd2b499))
* fixes and improvements for WooCommerce Subscriptions Gifting ([#3747](#3747)) ([49c4b35](49c4b35))
* handle user nicename change ([#3725](#3725)) ([cb045a3](cb045a3))
* **my-account:** add email change feature flag ([#3758](#3758)) ([21f2c30](21f2c30))
* rate limit adding new payment methods by user ([#3679](#3679)) ([0fd5ea5](0fd5ea5))

### BREAKING CHANGES

* **recaptcha:** shippable product orders will auto-complete by default after this change.

* chore: undo unwanted change
@matticbot
Copy link
Contributor

🎉 This PR is included in version 6.0.0-alpha.1 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

leogermani added a commit that referenced this pull request Feb 27, 2025
* feat: handle user nicename change

* feat: check username availability on CLI

* docs: improve doc block
naxoc pushed a commit that referenced this pull request Feb 27, 2025
* feat: handle user nicename change (#3725)

* feat: handle user nicename change

* feat: check username availability on CLI

* docs: improve doc block

* Feat/change nicename UI (#3740)

* feat: handle user nicename change

* feat: check username availability on CLI

* docs: improve doc block

* feat: add experimental UI to change nicename

* Update src/nicename-change/index.js

Co-authored-by: Derrick Koo <[email protected]>

* Update src/nicename-change/index.js

Co-authored-by: Derrick Koo <[email protected]>

---------

Co-authored-by: Derrick Koo <[email protected]>

---------

Co-authored-by: Derrick Koo <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
released on @alpha [Status] Approved The pull request has been reviewed and is ready to merge
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants