Hola trejido. Muchas gracias por tu respuesta, pero ya conseguí solucionarlo con estas correcciones sobre el código original de jQuery. El problema estaba en que en lugar de tomar los divs padres tomaba los elementos h3 directamente. De esta form sí funciona, espero que le sirva al alguien:
Código PHP:
var wrapper = $(".work-caption");
var theItem =$(".work-caption h3");
var contHeight=$(wrapper).height();
var contMiddle=contHeight/2;
var titleMiddle=$(".work-caption h3").height()/2;
var theMiddle=contMiddle-titleMiddle;
$('.work-caption').each(function(i) {
var wh = $(this).height();
var ih = $('h3', this).height();
if (wh > ih) {
$('h3', this).css('margin-top', (wh-ih)/2 + 'px');
} else {
$('h3', this).css('margin-top',0);
}
});