Вот моя функция:
public function save_meta( $term_id = 0, $taxonomy = '' ) {
$meta = ! empty( $_POST['banner'] ) ? $_POST['banner'] : '';
if ( empty( $meta ) ) {
delete_term_meta( $term_id, 'banner' );
} else {
update_term_meta( $term_id, 'banner', $meta );
}
}
И когда Трэвис просматривает код, он говорит мне, что
Обработка данных формы без одноразовой проверки.
| | (WordPress.CSRF.NonceVerification.NoNonceVerification)
Я попробовал следующее, но не работает:
public function save_meta( $term_id = 0, $taxonomy = '' ) {
$meta = ! empty( $_POST['banner'] ) && wp_verify_nonce( sanitize_key( $_POST['banner'] ) ? $_POST['banner'] : '';
if ( empty( $meta ) ) {
delete_term_meta( $term_id, 'banner' );
} else {
update_term_meta( $term_id, 'banner', $meta );
}
}
Что не так с моим кодом?
Одноразовый номер — это хеш идентификатора пользователя, токена сеанса, текущего времени и тега, сгенерированного функцией wp_create_nonce (). Этот хеш используется для проверки того, что запрос не является поддельным. В вашем случае подходящим тегом будет «update-banner_». $ Term_id. Ваш HTTP-запрос должен возвращать этот одноразовый номер в качестве параметра запроса или публикации. Для отправки формы это обычно делается с помощью скрытого поля в форме. WordPress предоставляет удобную функцию wp_nonce_field () для этого. Ваш обработчик запроса должен затем проверить этот одноразовый номер, используя функцию wp_verify_nonce () или вспомогательную функцию check_admin_referer (). Пожалуйста, прочитайте документацию WordPress для получения подробной информации о вызове этих функций.
Других решений пока нет …