Intereting Posts
Функция plugins_url смешивает системный путь и URL-адрес Заказывать результаты архива по идентификатору сообщения в шаблоне пользовательской таксономии проблема с nextgen-плагином Ограничьте автора, чтобы выбрать из медиа-библиотеки, но не загружать медиа Добавление количества символов и ограничений в комментариях, изменение меток и полей – jetpack Как создать полную высоту iframe внутри wp-admin? Как удалить изображение заголовка на подстраницах в Twenty Eleven (тема по умолчанию)? Отображать только предстоящие события / Показать все события, когда выбран год архива Получить путь к первому прикрепленному медиа (single.php) Как удалить уведомление внутри search.php, когда результаты не найдены? вызов the_post_thumbnail, удаляющий li в коде Ограничить количество слов тегов По умолчанию загрузочный архив «post»? Добавление разбивки на страницы на пользовательской странице автора Изменение JS-файла с данными из настроек плагина

Как использовать do_action_ref_array?

У меня есть плагин, который имеет этот метод в нем, который должен иметь крючок для пользовательской проверки. У меня есть два вопроса:

  1. Я не уверен, как это назвать (отправил мою попытку ниже)
  2. Похоже, у плагина есть ошибка, потому что я не могу получить $ cart_key?

Код плагина с помощью крючка:

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 ] ) ); } } } } 

Мой код в functions.php:

 /** * Adds the custom validator for postcodes */ function postcode_custom_validator_action($field, $errors, $fieldId) { if ( $fieldId == 16020 ) { $postcodesCoveredSetting = get_theme_mod( 'postcode_textbox' ); if(!isValidPostcode($field->value, $postcodesCoveredSetting)) { // Validator.php says: "if the value is not valid then please add an error message like in the above example." // which looks like this: // $this->errors['custom_fields'][ $cart_key ][ $field->id ] = __( 'Required', 'bookly' ); // but $cart_key not passed through it seems? $errors['custom_fields'][ $cart_key ][ $field->id ] = __( "Sorry, we only cover " . $postcodesCoveredSetting . " postcode areas at the moment", 'bookly' ); } } } add_action ( 'bookly_validate_custom_field', 'postcode_custom_validator_action', 10, 3 ); // 10 is priority, 3 is number of params in array? 

Solutions Collecting From Web of "Как использовать do_action_ref_array?"