我在使用WP插件时遇到了真正的问题,因为我似乎无法访问我的PHP数据来查看发生了什么。
如果我在PHP函数中添加了任何不喜欢的内容,插件将发出一个ajax调用,该调用将挂起(如下所示)。
而不是线路
do_action_ref_array( \'bookly_validate_custom_field\', array( $field, &$this->errors, $fields[ $field->id ] ) );
我试过了
$this->errors[\'custom_fields\'][ $cart_key ][ $field->id ] = __( \'bad\', \'bookly\' );
它可以工作,并在页面上显示一条错误消息“bad”(这与我想要的一样,尽管我想将其设置为有条件的)。
然而,如果我把var_dump($this)
在那里,ajax调用挂起。
而且echo \'<script>console.log("My")</script>\';
我哪儿都没找到
最终,我想编写一个函数从外部连接到挂钩,但我需要在这里使用代码来解决如何做到这一点,因为我看不到发生了什么,所以我陷入了困境。
非常感谢您的帮助。
public function validateCustomFields( $value, $form_id, $cart_key )
{
$decoded_value = json_decode( $value );
$fields = array();
foreach ( json_decode( get_option( \'bookly_custom_fields\' ) ) as $field ) {
$fields[ $field->id ] = $field;
}
foreach ( $decoded_value as $field ) {
if ( isset( $fields[ $field->id ] ) ) {
if ( ( $fields[ $field->id ]->type == \'captcha\' ) && ! Captcha\\Captcha::validate( $form_id, $field->value ) ) {
$this->errors[\'custom_fields\'][ $cart_key ][ $field->id ] = __( \'Incorrect code\', \'bookly\' );
} elseif ( $fields[ $field->id ]->required && empty ( $field->value ) && $field->value != \'0\' ) {
$this->errors[\'custom_fields\'][ $cart_key ][ $field->id ] = __( \'Required\', \'bookly\' );
} else {
/**
* Custom field validation for a third party,
* if the value is not valid then please add an error message like in the above example.
*
* @param \\stdClass
* @param ref array
* @param \\stdClass
*/
do_action_ref_array( \'bookly_validate_custom_field\', array( $field, &$this->errors, $fields[ $field->id ] ) );
}
}
}
}