É.. eu não sabia que o wordpress faz automaticamente..

Mas se por um acaso não fizer ou vc precisar fazer manualmente, o script abaixo lê todos os posts publicados, e escreve a regra htaccess para redicionar do formato year/day/month/post_name para category/post_name

Chega de enrolação, e lá vai o código:

<?php
ini_set('display_errors', 1);

$mysqli = new mysqli('localhost', 'usuario', 'senha', 'banco');

$sql = "SELECT ID, post_name, DATE_FORMAT(post_date, '%Y/%m/%d') AS data FROM wp_posts 
		WHERE
			 post_type = 'post' AND 
			 post_status = 'publish'
		";

$query = $mysqli->query($sql);


while( $dados = $query->fetch_object() ) {

	$sql = "SELECT * FROM `wp_term_taxonomy` 
			JOIN wp_terms 
				ON wp_terms.term_id = `wp_term_taxonomy`.term_taxonomy_id 
			WHERE term_taxonomy_id 
				IN (
					SELECT term_taxonomy_id  
					FROM  `wp_term_relationships` 
					WHERE object_id = {$dados->ID}
					) 
				AND taxonomy = 'category'
			ORDER BY name ASC
			LIMIT 1";

	$query_cat = $mysqli->query( $sql );
	$dados_cat = $query_cat->fetch_object();


	$url = $dados->data.'/'.$dados->post_name.'/';
	$to = $dados_cat->slug.'/'.$dados->post_name.'/';


	echo 'RewriteRule ^'.$url.'$', ' ', $to ,' [NC,R=301,L]<br />';
}

A saída é neste formato:

RewriteRule ^2009/08/14/verificar-se-usuario-ja-existe-no-banco/$ ajax/verificar-se-usuario-ja-existe-no-banco/ [NC,R=301,L]