epotter2017
Forum Replies Created
-
I was having a similar problem. I was creating a custom post type and setting the expiration date with Formidable Forms. When I went to the actual posts, I found that the expiration dates were being set correctly, and I even double checked them in the database. Everything looked exactly as it should, but the expiration wasn’t being scheduled, and there was no evidence of any such event in the debug logs. And if I manually saved the post, the expiration dates worked fine.
So I went digging in the plugin’s files (post-expirator.php), and I found a function called
_scheduleExpiratorEvent. In my own functions.php file, I required the post-expirator.php file, and then called the_scheduleExpiratorEventfunction at the end of my function. It’s been working great so far.function formidable_set_expiration ( $entry_id, $form_id ) { if ( $form_id == 2 ) { //require the plugin file to gain access to its functions require_once(ABSPATH . 'wp-content/plugins/post-expirator/post-expirator.php'); // get the post info $entry = FrmEntry::getOne( $entry_id ); $post = $entry->post_id; //Set the variables $now = new DateTime(); $current_date = $now->getTimestamp(); $end_date = $_POST['item_meta'][80]; $end_time = $_POST['item_meta'][107] ?: "11:59 PM"; $expires = $end_date . " " . $end_time; $gmt_end_date = get_gmt_from_date("$expires", 'U'); $opts['expireType'] = "trash"; $opts['id'] = $post; // Add expiration date update_post_meta( $post, '_expiration-date', $gmt_end_date ); update_post_meta( $post, '_expiration-date-options', $opts ); update_post_meta( $post, '_expiration-date-status','saved' ); // Revive trashed posts if updated date/time is valid if( get_post_status( $post ) == 'trash' && $current_date < intval($gmt_end_date)){ wp_untrash_post( intval($post) ); } // Call the plugin function _scheduleExpiratorEvent($post,$gmt_end_date,$opts); } } add_action('frm_after_create_entry', 'formidable_set_expiration', 30, 2); add_action('frm_after_update_entry', 'formidable_set_expiration', 10, 2);