Intereting Posts
Сортировка пользовательского типа сообщений пользователем usermeta Как превратить WordPress в платный сайт участника Уведомление администратора не отображается Организовать статьи контента пользовательскими сообщениями, таксономиями или другим способом? Пользовательский запрос SQL Query для добавления настраиваемого поля в результат WordPress wp_get_attachment_thumb_url full Пользовательский тип сообщения и пользовательское меню Walker для добавления настраиваемого класса для активных типов сообщений Как создать пользовательский вложенный цикл в bbPress (плагин WordPress + bbPress) Значение Shortcode плагина в сообщении Неплохая практика создания собственной таблицы для плагина? Перемещение раздела комментариев влево от содержимого (Двадцать тринадцать) Показать продукты woocommerce в архиве авторов Скрыть список плагинов Изменить заголовок, загруженный jQuery, для использования HTTPS $ item-> url не извлекает url в пользовательском ходоке?

Как использовать 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?"