ACF自定义验证消息未显示

时间:2021-01-25 作者:geochanto

我有两个日期字段,我想确保;“结束日期”;始终晚于;开始日期;。

我根据添加了验证函数ACF\'s documentation. 它确实会触发,但自定义消息不会显示在字段旁边。它只说了一句;验证失败“;在顶部。

add_action(\'acf/validate_save_post\', \'my_acf_validate_save_post\');

function my_acf_validate_save_post()
{

    $start = $_POST[\'acf\'][\'field_5fb0e816ea4fc\'];
    $start = new DateTime($start);

    $end = $_POST[\'acf\'][\'field_5fb0e83aea4fd\'];
    $end = new DateTime($end);

    // check custom $_POST data
        if ($start > $end) {
            acf_add_validation_error(\'event_series_end_date\', \'End Date should be later than the Start Date\');
        }
}

1 个回复
最合适的回答,由SO网友:HK89 整理而成

添加此代码段并根据需要进行检查。

add_action(\'acf/validate_save_post\', \'my_acf_validate_save_post\');
    
    function my_acf_validate_save_post()
    {
    
        $start = $_POST[\'acf\'][\'field_5fb0e816ea4fc\'];
        //$start = new DateTime($start);
        $start = strtotime($start);
    
        $end = $_POST[\'acf\'][\'field_5fb0e83aea4fd\'];
        //$end = new DateTime($end);
        $end = strtotime($end);
    
        if( current_user_can(\'manage_options\') ) {
    
            acf_reset_validation_errors();
        
        }
    
        // check custom $_POST data
        if ($start > $end ) {

            acf_add_validation_error($_POST[\'acf\'][\'field-600e609de8ab8\'], \'End Date should be later than the Start Date\');

         }else if ($start == $end ) { 
        
            acf_add_validation_error($_POST[\'acf\'][\'field-600e609de8ab8\'], \'End Date should be equal to the Start Date\');

    }
    }
错误屏幕截图:enter image description here

相关推荐

WordPress REST API validation

我想验证发送到终点的数据。https://www.shawnhooper.ca/2017/02/15/wp-rest-secrets-found-reading-core-code/这篇文章引用了未记录的验证选项。我已经得到了我所需要的90%,但现在需要验证一个字符串长度,我似乎无法弄清楚。基本上,我需要说最大长度是X。我尝试了“maxLength”,但这不起作用。有没有人做过这个或者做得更好,还有没有关于这个的文档,我发现的帖子很旧。 \'args\' => array(&#