Created
October 3, 2011 06:18
-
-
Save NateJacobs/1258547 to your computer and use it in GitHub Desktop.
Get each users's most recent post as determined by post date. Disable the user's access if his/her last post is more than a certainnumber of days older than the current date. Must be used in conjunction with the User Access Expiration Plugin. http://wordp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Last Post by Author | |
* | |
* Must be used in conjunction with the User Access Expiration Plugin | |
* http://wordpress.org/extend/plugins/user-access-expiration/ | |
* | |
* Get each users's most recent post as determined by post date. | |
* Disable the user's access if his/her last post is more than a certain | |
* number of days older than the current date. As long as the user adds | |
* a new post before the max days required his/her access will not expire. | |
* | |
* For example, if Bob last posted on October 01 and the days required | |
* to keep posting is 5 then on Otober 06 Bob's access will be disabled | |
* or expired. If however, Bob adds a new post on October 05 he will not | |
* be disabled until October 10. | |
* | |
* @author Nate Jacobs | |
* @since 0.1 | |
* @link http://gist.github.com/1258547 | |
*/ | |
// not the best action. Really should be a cron job that runs once a day. | |
add_action( 'admin_init', 'uae_last_post' ); | |
function uae_last_post() | |
{ | |
/* Start User Configurable Values */ | |
// how many days does an author have to create a new post until they are disabled | |
$days = 10; | |
/* End User Configurable Values */ | |
// declare global $wpdb | |
global $wpdb; | |
// get the results of the query and put the object returned into the variable $posts | |
// in plain english: get the most recent post for each author | |
$posts = $wpdb->get_results( | |
"SELECT post_author, ID, post_date FROM ( SELECT * FROM $wpdb->posts ORDER BY post_date DESC ) | |
X WHERE post_status='publish' AND post_type='post' GROUP BY post_author ORDER BY ID DESC" | |
); | |
// loop through each returned post | |
foreach ( $posts as $post ) | |
{ | |
// get today's date in unix timestamp format | |
$today = strtotime( date( 'Y-m-d' ) ); | |
// get the expiration date in unix timestamp format | |
// the date is X number of days from post date where X is set in the $days variable above | |
$expire = strtotime( '+'. $days .'days', strtotime( $post->post_date ) ); | |
// is the expiration date older than today? | |
// if so, disable the user's access | |
if ( $expire < $today ) | |
{ | |
update_user_meta( $post->post_author, 'uae_user_access_expired', 'true' ); | |
} | |
} | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment