Sanificare l'input intero per update_post_meta
Quando aggiorno una post meta dove l'input sarà sempre un intero, devo usare (int)
o esiste una funzione WordPress specifica (ad esempio sanitize_text_field
)?
Per esempio:
if(isset($_POST['category_id'])){
update_post_meta($post->ID, 'category_id', (int)($_POST['category_id']));
}

Per gli interi, KSES non ha una funzione speciale.
Utilizza (int)
o intval()
o absint()
Vedi anche: Validazione dei Dati - Interi

// Converte l'input utente in un intero, restituendo 0 se non è numerico
$safe_id = intval( $_POST['category_id'] );
if ( ! $safe_id ) {
$safe_id = '';
}
// Aggiorna i metadati del post con l'ID categoria validato
update_post_meta( $post->ID, 'category_id', $safe_id );
La funzione intval() converte l'input dell'utente in un numero intero e restituisce zero se l'input non è un valore numerico. Successivamente verifichiamo se il valore risultante è zero. In tal caso, salviamo un valore vuoto nel database. Altrimenti, salviamo il category_id correttamente validato.

Utilizza un'istruzione condizionale per verificare prima se $_POST['category_id'])
è un intero. La funzione PHP è is_int()
1
if(isset($_POST['category_id']) && is_int($_POST['category_id'])){
update_post_meta($post->ID, 'category_id', $_POST['category_id']);
}
Dovresti anche rimuovere gli spazi vuoti dai dati $_POST perché is_int()
restituirà false se la stringa contiene spazi vuoti2.
