web-dev-qa-db-fra.com

Chiffrer/déchiffrer le titre et les détails de la publication

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)

1
user520300

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 .

2
dbeja