File: /mnt/data/dreamsrent-wp-demo/wp-content/plugins/dreamsrent-booking/inc/metabox-minmax.php
<?php
add_action('load-post.php', 'rental_boxes_minmax_days_setup');
add_action('load-post-new.php', 'rental_boxes_minmax_days_setup');
function rental_boxes_minmax_days_setup() {
add_action('add_meta_boxes', 'dreams_rental_minmax_days_meta_boxes');
add_action('save_post', 'rental_save_post_minmax_days_meta', 10, 2);
}
function dreams_rental_minmax_days_meta_boxes() {
add_meta_box(
'rental-post-minmax-days',
esc_html__('Set Min/Max Days', 'bookingcore'),
'rental_minmax_days_meta_box',
'rental',
'normal',
'default'
);
}
function rental_minmax_days_meta_box($post) {
wp_nonce_field(basename(__FILE__), 'rental_post_minmax_days_nonce');
$post_id = get_the_ID();
$min_days = get_post_meta($post_id, 'car_min_days', true);
$max_days = get_post_meta($post_id, 'car_max_days', true);
?>
<div class="minmax_days_wrapper">
<div class="custom-row">
<div class="col-5">
<label class="mb-0"><?php echo esc_html__('Min Days', 'bookingcore'); ?></label>
<input type="number" name="min_days" id="min_days" value="<?php echo esc_attr($min_days); ?>" placeholder="Minimum Days" min="0">
</div>
<div class="col-5">
<label class="mb-0"><?php echo esc_html__('Max Days', 'bookingcore'); ?></label>
<input type="number" name="max_days" id="max_days" value="<?php echo esc_attr($max_days); ?>" placeholder="Maximum Days" min="0">
</div>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
const minDaysInput = document.getElementById('min_days');
const maxDaysInput = document.getElementById('max_days');
function validateDays() {
const minDays = minDaysInput.value ? parseInt(minDaysInput.value) : null;
const maxDays = maxDaysInput.value ? parseInt(maxDaysInput.value) : null;
if (minDays !== null && minDays < 0) {
minDaysInput.setCustomValidity('Min Days cannot be negative.');
} else {
minDaysInput.setCustomValidity('');
}
if (maxDays !== null && maxDays < 0) {
maxDaysInput.setCustomValidity('Max Days cannot be negative.');
} else if (maxDays !== null && minDays !== null && maxDays <= minDays) {
maxDaysInput.setCustomValidity('Max Days must be greater than Min Days.');
} else {
maxDaysInput.setCustomValidity('');
}
}
minDaysInput.addEventListener('input', validateDays);
maxDaysInput.addEventListener('input', validateDays);
});
</script>
<?php
}
function rental_save_post_minmax_days_meta($post_id, $post) {
if (!isset($_POST['rental_post_minmax_days_nonce']) || !wp_verify_nonce($_POST['rental_post_minmax_days_nonce'], basename(__FILE__))) {
return $post_id;
}
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return $post_id;
}
if (!current_user_can('edit_post', $post_id)) {
return $post_id;
}
if ('rental' !== $post->post_type) {
return $post_id;
}
$min_days = isset($_POST['min_days']) && $_POST['min_days'] !== '' ? max(0, intval($_POST['min_days'])) : null;
$max_days = isset($_POST['max_days']) && $_POST['max_days'] !== '' ? max(0, intval($_POST['max_days'])) : null;
if ($min_days !== null) {
update_post_meta($post_id, 'car_min_days', $min_days);
} else {
delete_post_meta($post_id, 'car_min_days');
}
if ($max_days !== null) {
update_post_meta($post_id, 'car_max_days', $max_days);
} else {
delete_post_meta($post_id, 'car_max_days');
}
}