如何限制 ACF 日期选择器中的两个日期用于 Wordpress 中的开始日期和结束日期?
How can I restrict Two dates in ACF date picker for Starting date and Ending Date in Wordpress?
我在 Wordpress 中创建了一个活动 post 类型。为此,我从 ACF 日期选择器中输入了开始日期和结束日期。
我希望管理员可以 select 结束日期大于开始日期。
有什么方法可以限制开始日期和结束日期吗?
例如,如果管理员选择 2016 年 1 月 1 日作为开始日期,那么他只能 select 结束日期为 1 月 1 日或更早的 selected 日期。
我认为我们可以使用 java 脚本来完成,并使用此代码来设置结束日期的限制:
$( ".selector" ).datepicker({
minDate: new Date( )
});
我在使用常规日期字段时遇到了类似的问题,希望经过一些调整的 JS 代码(带有 moment JS 库)对您有所帮助。
$(document).ready(function() {
$("input[name='Arrival']").change(function() {
var date_picked = $("input[name='Arrival']").val();
var SpecialTo = moment(date_picked, "YYYY-MM-DD");
var today = new Date();
today.setDate(today.getDate() - 240);
var selectedDate = new Date(date_picked);
if (today <= selectedDate) {
//alert('Date is today or in future');
} else {
alert('Date is in the past');
$("input[name='Arrival']").val('');
}
});
})
如果您可以 post 带有值的日期输入源 HTML,我可能可以将其更改为您要查找的内容。
我认为acf在admin area中没有日期限制的可能性。
我可能会在 acf 的较新版本中完成。
您可以从这里请求...
http://support.advancedcustomfields.com/forums/forum/feature-requests/
这是ACF中非常重要和必要的功能,很多人都想要它。我花了很多时间来解决这个问题并进行研究,但没有得到任何解决方案。它是 ACF 的要求,因此它将与最新版本的 ACF 一起提供。
这很好用。只需使用 inspect 元素获取名称字段。在 functions.php 文件中添加此代码。
add_action('acf/validate_save_post', 'my_acf_validate_save_post', 10, 0);
/**
* @throws Exception
*/
function my_acf_validate_save_post() {
$start = $_POST['acf']['field_61a7519a57d99'];
$end = $_POST['acf']['field_61a751d957d9a'];
// check custom $_POST data
if ($start > $end) {
acf_add_validation_error('acf[field_61a751d957d9a]', 'End date should be greater than or equal to start date.');
}
}
当您打开检查元素时,输入字段应如下所示:
<div class="acf-date-picker acf-input-wrap" data-date_format="dd. MM yy" data-first_day="1">
<input type="hidden" id="acf-field_61a751d957d9a" name="acf[field_61a751d957d9a]" value="20211201">
<input type="text" class="input hasDatepicker" value="16. January 2022" id="dp1638477022818">
</div>
您可以在此处找到更多信息:
https://www.advancedcustomfields.com/resources/acf-validate_save_post/
我在 Wordpress 中创建了一个活动 post 类型。为此,我从 ACF 日期选择器中输入了开始日期和结束日期。
我希望管理员可以 select 结束日期大于开始日期。
有什么方法可以限制开始日期和结束日期吗?
例如,如果管理员选择 2016 年 1 月 1 日作为开始日期,那么他只能 select 结束日期为 1 月 1 日或更早的 selected 日期。
我认为我们可以使用 java 脚本来完成,并使用此代码来设置结束日期的限制:
$( ".selector" ).datepicker({
minDate: new Date( )
});
我在使用常规日期字段时遇到了类似的问题,希望经过一些调整的 JS 代码(带有 moment JS 库)对您有所帮助。
$(document).ready(function() {
$("input[name='Arrival']").change(function() {
var date_picked = $("input[name='Arrival']").val();
var SpecialTo = moment(date_picked, "YYYY-MM-DD");
var today = new Date();
today.setDate(today.getDate() - 240);
var selectedDate = new Date(date_picked);
if (today <= selectedDate) {
//alert('Date is today or in future');
} else {
alert('Date is in the past');
$("input[name='Arrival']").val('');
}
});
})
如果您可以 post 带有值的日期输入源 HTML,我可能可以将其更改为您要查找的内容。
我认为acf在admin area中没有日期限制的可能性。
我可能会在 acf 的较新版本中完成。
您可以从这里请求...
http://support.advancedcustomfields.com/forums/forum/feature-requests/
这是ACF中非常重要和必要的功能,很多人都想要它。我花了很多时间来解决这个问题并进行研究,但没有得到任何解决方案。它是 ACF 的要求,因此它将与最新版本的 ACF 一起提供。
这很好用。只需使用 inspect 元素获取名称字段。在 functions.php 文件中添加此代码。
add_action('acf/validate_save_post', 'my_acf_validate_save_post', 10, 0);
/**
* @throws Exception
*/
function my_acf_validate_save_post() {
$start = $_POST['acf']['field_61a7519a57d99'];
$end = $_POST['acf']['field_61a751d957d9a'];
// check custom $_POST data
if ($start > $end) {
acf_add_validation_error('acf[field_61a751d957d9a]', 'End date should be greater than or equal to start date.');
}
}
当您打开检查元素时,输入字段应如下所示:
<div class="acf-date-picker acf-input-wrap" data-date_format="dd. MM yy" data-first_day="1">
<input type="hidden" id="acf-field_61a751d957d9a" name="acf[field_61a751d957d9a]" value="20211201">
<input type="text" class="input hasDatepicker" value="16. January 2022" id="dp1638477022818">
</div>
您可以在此处找到更多信息: https://www.advancedcustomfields.com/resources/acf-validate_save_post/