Adjust line 6, replacing ‘2025-12-31’ with your desired expiration date.
Note: You may need to adjust line 7 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 ( empty( $_GET['update_bulk_listing_expiry'] ) || ! current_user_can( 'administrator' ) ) {
return false;
}
// Set your new listing expiry to a custom date
$new_listing_expiry = date('Y-m-d H:i:s', strtotime('2025-12-31'));
$next_data = 100;
$offset = 0;
do {
$listings = (array) get_posts([
'post_type' => 'job_listing',
'offset' => $offset,
'posts_per_page' => $next_data,
'post_status' => ['publish', 'draft', 'expired', 'pending']
]);
printf(
"Fetching listing expiry data from listing %d to %d <br />",
$offset + 1,
$offset + $next_data
);
flush();
ob_flush();
foreach ( $listings as $listing ) {
// Update new listing expire
update_post_meta( $listing->ID, '_job_expires', $new_listing_expiry );
$updated = wp_update_post( [ 'ID' => $listing->ID, 'post_status' => $listing->post_status ] );
}
$offset = ( ! $offset ) ? $next_data : $offset + $next_data;
} while( ! empty( $listings ) );
exit('All listings are updated, you may close this window');
} );