【问题标题】:WordPress Caldera Forms show error message on validationWordPress Caldera 表单在验证时显示错误消息
【发布时间】:2019-06-04 13:49:52
【问题描述】:

我正在尝试为 Caldera Forms 创建一个自定义插件。所以基本上我正在为 Caldera Forms 创建一个处理器。在该插件中,当有人尝试提交表单时,它应该显示自定义错误。所以为此我已经完成了这样的代码

add_filter( 'caldera_forms_get_form_processors', 'wpcfmu_register_processor' );

function wpcfmu_register_processor() {
    $processors['wp_cf_mu_integration'] = array(
        "name"              =>  __('Custom Integration'),
        "description"       =>  __("Custom Plugin"),
        "author"            =>  'test',
        "pre_processor"    =>  'wpcfmu_pre_process',
    );

    return $processors;
}

function wpcfmu_pre_process($config, $form, $process_id) {
    $error = 'something happened wrong';
    return array(
        'note' => $error,
        'type' => 'error'
    );
}

但这里根本没有这样的表现。我试图更改代码,但无论如何它显示成功消息。谁能告诉我这里出了什么问题?

任何帮助和建议都会非常感激。

【问题讨论】:

  • return array(error =>$error, type' => 'error'); 应该这样写吗?这不是语法错误吗?也许return array("error" => $error, "type" => "error"); 更好?
  • @DavidAngulo 抱歉,我遇到了拼写错误。我添加了引号,但它仍然不适合我。

标签: php wordpress


【解决方案1】:

到目前为止,我了解到您正在犯一些语法错误,这就是它既不返回表单值也不返回错误的原因。

function wpcfmu_register_processor() {
    $processors['wp_cf_mu_integration'] = array(
        'name' => __('Custom Integration'),
        'description' => __('Custom Plugin'),
        'author' => 'test',
        'pre_processor' => 'wpcfmu_pre_process'
    );
}

function wpcfmu_pre_process($config, $form, $process_id) {
    $error = 'some happened wrong';
    return array(
        'error' => $error,
        'type' => 'error'
    );
}

正如您所见,您遇到了一些引用问题,您有时使用单引号,有时使用双引号。您必须对 PHP 中的引号保持一致。如果您的问题没有解决,请在下方评论,我们会解决的。

更新: 您是否尝试在提交表单时立即分析错误日志文件?如果有错误,请告诉我。

如果没有任何错误,请检查您的错误报告是否开启。

如果这一切都没有解决,那么

//find and return error
if( is_wp_error( $response ) ){
    $error = $response->get_error_message();
}elseif ( isset( $response[ 'error' ]) ){
    $error =  $response[ 'error' ];
}else{
    $error = 'Something bad happened';
}

然后你把你的错误函数

function wpcfmu_pre_process($config, $form, $process_id) {
    $error = 'some happened wrong';
    return array(
        'error' => $error,
        'type' => 'error'
    );
}

希望您能解决一个错误。如果您没有收到错误,请再次发表评论。我们会看到的。

【讨论】:

  • 抱歉,我遇到了拼写错误。我添加了引号,但它仍然不适合我。
  • 再次您好,查看更新版本的答案。如果您遇到任何问题或我的回答对您根本没有帮助,请在下面发表评论。谢谢
猜你喜欢
  • 2019-06-11
  • 2015-04-17
  • 1970-01-01
  • 2016-03-05
  • 1970-01-01
  • 2022-11-09
  • 1970-01-01
  • 2019-12-10
  • 2018-12-16
相关资源
最近更新 更多