【发布时间】:2020-10-16 08:36:10
【问题描述】:
我试图让表单中的 2 个字段在特定时间和日期后变为只读状态。 我拼凑了一些来自几个地方的代码以尝试完成这项工作,但我完全是新手,所以我无法确定哪里出错或为什么出错。
在下面的示例中,我希望有条件地只读的字段是 1 和 13。我什至不确定数字 9 和 2 的用途。就像我说的,绝对的初学者。
从他的回答中添加 Angel 的时间和日期定义,这就是我目前所拥有的......
$W1F1Start = "2020-10-16 12:42:00";
$now = date('Y-m-d H:i:s');
if(strtotime($now) > strtotime($W1F1Start)){
add_filter('frm_setup_new_fields_vars', 'frm_set_read_only_on_create', 9, 2);
add_filter('frm_setup_edit_fields_vars', 'frm_set_read_only_on_create', 9, 2);
function frm_set_read_only_on_create( $values, $field ){
if ( in_array( $field->id, array( 1,13 ) ) ) {
$values['read_only'] = 1;
}
return $values;
}
return $values;
}
如果我让这个工作,我最终需要在不同的时间和日期以相同的形式将最多 20 个字段设为只读。
如果有影响的话,我的表单在 wordpress 上是一个强大的表单。
在他们的知识库中,他们有 2 位代码,我认为我可以以某种方式将它们放在一起做我想做的事,但我不知道如何......
这个'使字段只读'基于事物
add_filter('frm_setup_new_fields_vars', 'frm_set_read_only_on_create', 9, 2);
add_filter('frm_setup_edit_fields_vars', 'frm_set_read_only_on_create', 9, 2);
function frm_set_read_only_on_create( $values, $field ){
// If on the back-end, keep fields editable
if ( FrmAppHelper::is_admin() || current_user_can( 'administrator' ) ) {
return $values;
}
// If on front-end, make specific fields read-only
if ( in_array( $field->id, array( 554,555,556 ) ) ) {
$values['read_only'] = 1;
}
return $values;
}
这个“基于当前日期”做了一些事情
add_filter('frm_setup_new_fields_vars', 'remove_field_option_by_date', 30, 2);
add_filter('frm_setup_edit_fields_vars', 'remove_field_option_by_date', 30, 2);
function remove_field_option_by_date( $values, $field ) {
$today = time();
$close_date = strtotime ( "2020-06-20" ); // change 2020-06-20 to the date after which the option should be removed
if ($today id == 13677 ) { // change 13677 to your field id
$options_to_remove = array( 'Option 1' ); // change Option 1 to the value to remove
foreach ( $options_to_remove as $remove ) {
$option_key = array_search( $remove, $values['options'] );
if ( $option_key !== false ) {
unset( $values['options'][ $option_key ] );
}
}
}
return $values;
}
我需要“使字段只读”-“基于日期”。但我不知道如何将这两件事放在一起。
希望这是所有需要的信息。这可能吗?
【问题讨论】:
-
这并不能解决您的问题,但您应该使用 Datetime 类而不是 PHP 时间函数 php.net/manual/fr/class.datetime.php。这是处理日期和时间的更好方法
-
目前我正在将此代码放入一个名为 Code Snippets 的 wordpress 插件中,否则我不知道该放在哪里。
-
感谢 ypio,感谢您的任何建议。
-
不不不,你完全搞砸了!我的代码应该在你的方法中!不要这样包装它
-
我会用你的原始代码制作和编辑
标签: php date time conditional-statements field