Galera se alguem precisar eu consegui resolver isso
tem duas formas
adicionar esse código no functions
function wpa_109409_is_purchasable( $purchasable, $product ){
if( $product->get_price() == 0 )
$purchasable = false;
return $purchasable;
}
add_filter( ‘woocommerce_is_purchasable’, ‘wpa_109409_is_purchasable’, 10, 2 );
ou ir no /wp-content/plugins/woocommerce/templates/single-product/add-to-cart
e colocar o código:
<?php if( $product->get_price() == 0 ) {
/* não mostra nada se for preço 0 */
} else {
código do botão
}