Используя API настроек WooCommerce, как я могу фильтровать или добавлять ошибки в значения параметров?

В документации API настроек WooCommerce имеется достаточно информации, чтобы получить настройки, добавленные в экраны метода шлюза/доставки.

Однако, в отличие от встроенного API-интерфейса WordPress, не существует документально подтвержденных "дезинфицирующих" обратных вызовов, например, у register_setting() WordPress. Таким образом, если указан недопустимый контент, я не уверен, где я должен использовать add_settings_error или аналогичный.

Как я должен это делать, и какую документацию я не упускал?

1 ответ

Не уверен, где он задокументирован (если вообще), но я нашел ответ в коде:

woocommerce/classes/abstracts/abstract-wc-settings-api.php ~ 651 (в версии 2.0ish) имеет следующий код:

// Look for a validate_FIELDID_field method for special handling
if ( method_exists( $this, 'validate_' . $k . '_field' ) ) {
 $field = $this->{'validate_' . $k . '_field'}( $k );
 $this->sanitized_fields[ $k ] = $field;

Это означает, что если вы добавили настройку с чем-то вроде этого:

'username' => array(
 'title' => __( 'Username', 'woocommerce' ),
 'type' => 'text',
 'description' => __( 'Please enter your Payment Gateway Username; this is required for taking payments!', 'woocommerce' ),
 'default' => ''
),

Затем вам нужно добавить метод в тот же класс шлюза платежей, который называется validate_username_field, который принимает один аргумент (значение параметра, в данном случае имя пользователя) и возвращает очищенное значение и/или создает ошибку.

Например,

public function validate_username_field($value)
{
 if (...)
 {
 // Valid username!
 return $value;
 } else {
 // Invalid? 
 add_settings_error(...); 
 }
}

Или что-то вдоль этих линий.

licensed under cc by-sa 3.0 with attribution.