Après avoir passé la journée dessus, la réponse est la suivante :
Wordpress s'échappe à la déclaration $_POST, pas à l'insertion réelle, ce qui est bizarre.
$id = stripslashes_deep($_POST['id']); //added stripslashes_deep which removes WP escaping.
$title = stripslashes_deep($_POST['title']);
$message = stripslashes_deep($_POST['message']);
$wpdb->update('table_name', array('id'=>$id, 'title'=>$title, 'message'=>$message), array('id'=>$id));
Cela signifie que WP n'ajoutera pas de barres obliques avant les guillemets.