Ersetzen Sie die Taste zur Warenkorben durch ein Kontaktformular, wenn das Produkt in WooCommerce nicht vorrätig ist
Posted: 18 May 2025, 20:41
Mit Hilfe der Community habe ich das gewünschte Verhalten mit variablen Produkten erfolgreich erhalten, aber ich kann es nicht an einfachen Produkten duplizieren.
Aber alle Variationen darüber, die ich für ein einfaches Produkt ausprobiert habe, sowohl in der functions.php-Datei als auch in /woocommerce/templates/single-product/add-to-cart/Simple.php, geben Sie einfach das Standardverhalten (oder erstellen Sie einen kritischen Fehler).>
Code: Select all
function woocommerce_get_custom_availability( $data, $product ) {
switch( $product->stock_status ) {
case 'readytoship':
$data = array( 'availability' => __( 'In Stock','woocommerce' ), 'class' => 'ready-to-ship' );
break;
case 'outofstock':
$data = array( 'availability' => __( 'Call for Quote', 'woocommerce' ), 'class' => 'out-of-stock' );
break;
case 'onbackorder':
$data = array( 'availability' => __( 'On Backorder', 'woocommerce' ), 'class' => 'onbackorder' );
break;
}
return $data;
}
add_action('woocommerce_get_availability', 'woocommerce_get_custom_availability', 10, 2);
add_filter( 'woocommerce_available_variation', 'variation_out_of_stock_show_form', 10, 3 );
function variation_out_of_stock_show_form( $data, $product, $variation ) {
if( ! $data['is_in_stock'] )
{
$data['availability_html'] = '';
$data['availability_html'] .= 'Please contact us for a quote and availability.';
$data['availability_html'] .= do_shortcode('[gravityform id="10" title="false" description="false" ajax="true"]'); // Replace with your own contact form shortcode
$data['availability_html'] .= '';
}
return $data;
}
add_action( 'woocommerce_single_product_summary', 'hide_add_to_cart_button_variable_product', 1, 0 );
function hide_add_to_cart_button_variable_product() {
// Removing add to cart button and quantities only
remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
}