The 30-year-old hit .271 with three homers and 17 RBIs in 34 games for Pittsburgh last year, when his season ended in June because of surgery on his lower back. Snyder hit 15 homers with 48 RBIs for the Pirates in 2010.
Snyder played for Arizona from 2004 until joining the Pirates in 2010. He has 70 homers, 273 RBIs and a .231 average in his career.
The deal was announced Friday.