You should be able to use the set_user_role
action which is triggered when a user’s role is changed. The action function is passed the user’s ID, new role, and old role(s). Something like this:
add_action( 'set_user_role', 'wpse161590_set_user_role', 10, 3 );
function wpse161590_set_user_role( $user_id, $role, $old_roles ) {
if ( 'Pending' == $role ) {
// set all of the user's posts to Draft
}
if ( 'Subscriber' == $role ) {
// set all of the user's posts to Publish
}
}
You may want to consider a custom post status on the off chance that a Subscriber has one or more posts manually set as Drafts when they are switched to Pending – to prevent those posts from being automatically published when the user renews and is switched back to Subscriber.
Related Posts:
- Is it possible to have more “levels” of draft/published statuses?
- What is a “protected” post status?
- how to assign a status/mark to post?
- Why doesn’t wp_update_post() update the post_status field?
- register_post_status and show_in_admin_all_list
- Changing post status in one click
- How can I run custom function when post status is changed?
- WP_Post_List_Table::get_views – Have post counts account for filters?
- Creating/editing custom ‘post-state’
- Using arbitrary post status without registering it
- Get a list of ALL Statuses both registered and built-in
- Adding custom post status to visibility in publish meta box
- Changing post status
- Change scheduled posts to published
- Include Drafts or Future posts with count_user_posts?
- Remove ‘private’ and ‘pending review’ options from post status dropdown
- Can not get future_to_publish to work
- Which is the better way to get the status of a post?
- “Publish immediately” with custom post status
- Modify Post Status Arguments
- Additional page and post status types
- Add a simple JS Alert Box on Post Submission
- Function to change post status IF current user and post author are the same
- Schedule future post to custom post status instead of publish?
- Why does get_post_status display published when attachment is in trash?
- Force Custom Post Type Status to ‘Future’ on first Save or Publish
- Workflow for attachments in WordPress
- how to transition to custom post status on post save
- How to change custom post type status when non-admin updates post?
- Custom post status filter links always show a count of all posts in the site with that status, not the logged in users count
- wordpress post status inquery
- Multiple Post Status
- retrieve post details in loop
- Any way to change post/page status when editing page?
- How to change post status from “draft” to “publish”?
- transition_post_status doesn’t work with bulk updates
- Submitted for Review back to a Draft page
- How to Add Custom Post Status in WordPress Admin
- Auto draft posts when scheduled date is reached
- Changing a post status name
- How to create posts with a specific date in bulk
- How to update page status from publish to draft and draft to publish
- How to change “Draft” string for status of custom post type to “Unavailable”?
- WP_Query by post ID doesn’t work if post is in custom post_status
- Custom Post Status not showing in Custom Post Type ALL view
- Bulk Update of Custom Post Type Post Status through SQL
- Setting post meta data to random value during post status transition / on publish
- What action is called when drafts are saved?
- How to change post status from publish to draft using hook in wordpress?
- Automatically move pending posts after 30 days and, update the post date, when users update the posts
- Comments Feed & Custom Post Statuses
- why do drafts return as part of wp_query?
- Get images only if parent status is publish
- $error = 404 after caught add_rewrite_rule
- Create front end link to save post (or unpublish post) as draft
- How to untrash a post only if it was not a draft?
- How to integrate blog status?
- Auto-generated posts not showing in backend (but being counted!)
- Change sticky status of posts from phpMyAdmin
- Update post status from “publish” to “trash” for half of posts
- How can I set a Post’s default visibility to private and pending review checked
- How to limit post of custom post status?
- Change post status based on user role
- Pending status by default for a specific role
- Save author posts as in pending review – block users updating their posts
- Custom Status of Custom Post type need to EXCLUDE from Taxonomy pages
- Update postmeta Parent when post_status child change
- WordPress action hooks related to scheduled posts not Fired
- Admin – create custom post status and display above table
- WordPress capabilities on pending post status
- Changing status of Published posts which have less Content to “Draft”
- $post->post_type not working
- Why won’t draft listings appear for non-admins?
- custom post type, hide or disable the status line in publish meta box
- get_comments with post_status ‘public’ retrieves NULL result
- Is there a before_save_post hook or something similar
- Taxonomy vs Post Status
- How to add custom status to quick edit
- Change status of page after an event (Looking for best practice advice)
- Conditional tag-like function to tell if post is in trash?
- How do I modify this wpdb query to include posts that have a post_status of publish and draft?
- Show Last Revision Of Post That Has A Published Status On Single Page
- How to set a Post’s default visibility to ‘Private’ in Gutenberg?
- Fetch ids of live posts only (not posts with other statuses) and change status with a button in candidate dashboard
- Show custom post status when logged out
- WordPress post_status and meta_query
- How publish post from pending status
- Sql Update CPT from publish to draft and particular custom field
- change page status with code
- Function/filter or plugin to change post status based on custom field value
- wp.getPosts with status = ‘trash’ using node.js
- In the Edit Post page how do I modify with jQuery the status select list?
- Custom Query for searching through custom fields
- Check if post was modified by editor different than post author
- Do something when user creates post (that’s pending)
- posts stuck as drafts
- How to change post status to draft in Gutenberg?
- Comments not working (error not allowed) on posts with custom post status
- custom status in Woocommerce with database results
- transition_post_status hook, works – but not if the post is new