Comment puis-je accéder à Wordpress pour chiffrer un titre de publication et ses détails avant qu'il ne soit enregistré dans la base de données?
Alors, comment puis-je faire appel à Wordpress pour déchiffrer le titre et les détails de la publication avant qu'elle ne s'affiche à nouveau dans le panneau d'administration (pour qu'elle soit à nouveau lisible)
Pour changer le contenu d'un message avant qu'il ne soit enregistré, vous pouvez utiliser le filtre wp_insert_post_data .
J'utilise dans cet exemple un moyen simple/factice de représenter le chiffrement. Je remplace simplement chaque caractère par le code ascii correspondant. Il devrait être remplacé par votre méthode de cryptage.
add_filter( 'wp_insert_post_data' , 'encrypt_post' , 99, 1 );
function encrypt_post( $data ) {
// check if it's a post
if('post' !== $data['post_type']) {
return $data;
}
// this is just for demonstration purposes (a simple char to ascii code conversion), it should be replaced by your encryption method
$title = str_split( $data['post_title'] );
$title = array_map( function($n) { return ord( $n ); }, $title );
$title = implode( ".", $title );
$data['post_title'] = $title;
return $data;
}
Et ensuite, pour déchiffrer le titre de l'article sur la page d'édition, vous pouvez utiliser le filtre title_edit_pre:
function decrypt_post_title( $title, $post_id ) {
if( 'post' !== get_post_type( $post_id ) ) {
return $title;
}
// same dummy ascii code to char conversion
$title = explode( '.', $title );
$title = array_map( function($n) { return chr( $n ); }, $title );
$title = implode( "", $title );
return $title;
}
add_filter( 'title_edit_pre', 'decrypt_post_title', 99, 2 );
Pour déchiffrer d'autres champs de publication, vous devez vérifier les autres filtres dynamiques * _ edit_pre .