General manager John Mozeliak announced the agreement Friday and said Wigginton gives the Cardinals a right-handed bat "with punch."
The 35-year-old Wigginton, who will make $2.5 million annually, has hit 15 or more homers six times during 11 big-league seasons. He had 22 home runs in 2010, when he was an All-Star with Baltimore.
Wigginton has a .263 career average with 169 home runs and 591 RBIs in 1,315 games with the New York Mets (2002-04), Pittsburgh (2004-05), Tampa Bay (2006-07), Houston (2007-08), Baltimore (2009-10), Colorado (2011) and Philadelphia (2012). He has played 100 or more games in each of the past seven seasons.
Wigginton can earn additional performance bonuses.