Verifica se il codice presente nell'altro 3d non è praticamente identico:

Codice PHP:
<?php
function dateOrder($a$b) {
  return 
strcmp($a["data"], $b["data"]);
}

$arr = array(
    
=> array('tit' => 'Titolo''link' => 'link''data' => '30 gennaio 2013'),
    
=> array('tit' => 'Titolo''link' => 'link''data' => '6 gennaio 2013'),
    
=> array('tit' => 'Titolo''link' => 'link''data' => '14 gennaio 2013'),
    
=> array('tit' => 'Titolo''link' => 'link''data' => '23 gennaio 2013')
);

usort($arr"dateOrder");

foreach (
$arr as $key => $value) {
    echo 
$value['tit']." ".$value['link']." ".$value['data'] ."
"
;
}
?>
L'unico problema che richiede una modifica al codice è il metodo di confronto tra due le due date. Nel formato da te utilizzato, effettuando un semplice confronto tra strighe, purtroppo la data "6 gennaio 2013" viene dopo "30 gennaio 2013" dato che il primo carattere 6 viene dopo il 3 della seconda data.

Per ovviare a ciò ti consiglio di trasformare ad esempio prima del confronto le date in millisecondi.