Note: You may need to adjust line 5 to match the number of Listings on your website. Otherwise, the code snippet will not check more than 100 Listings.
add_action( 'init', function() {
if ( ! isset( $_GET['update_listing_expiry'] ) || ! current_user_can( 'administrator' ) ) {
return;
}
$next_data = 100;
$offset = 0;
do {
$listings = (array) get_posts( [
'post_type' => 'job_listing',
'offset' => $offset,
'posts_per_page' => $next_data,
'post_status' => 'any'
] );
printf(
"Fetching listings from listing %d to %d <br />",
$offset + 1,
$offset + $next_data
);
flush();
ob_flush();
foreach ( $listings as $listing ) {
update_post_meta( $listing->ID, '_job_expires', '' );
$updated = wp_update_post( [ 'ID' => $listing->ID, 'post_status' => 'publish' ] );
}
} while( ! empty( $listings ) );
exit('All listings are updated, you can close this window.');
}, 250 );
add_action( 'mylisting/admin/save-listing-data', function( $post_id, $listing ) {
// update expiry date
if ( isset( $_POST['mylisting_modify_expiry'] ) && $_POST['mylisting_modify_expiry'] === 'yes' ) {
$expiry_date = ! empty( $_POST['mylisting_expiry_date'] ) ? strtotime( $_POST['mylisting_expiry_date'] ) : false;
if ( $expiry_date ) {
update_post_meta( $post_id, '_job_expires', date( 'Y-m-d', $expiry_date ) );
} else {
delete_post_meta( $post_id, '_job_expires' );
}
}
}, 99, 2 );