在woocommerce中,使用contact Form 7插件,当产品缺货时,我试图用表格替换产品摘要中的产品数量字段。
它在可变产品上运行良好,但在简单产品上,仍显示表格和数量框。
感觉我正在忽略一些非常基本的内容。
我已经将“ echo
”替换为“简单”和“变量”以找出显示的是哪种形式,但是在简单产品上,它仍然显示“变量”形式。
这是我的代码:
add_action( 'woocommerce_single_product_summary', 'add_form' );
function add_form() {
global $product;
if( $product->is_type( 'simple' ) ){
// a simple product
if(!$product->is_in_stock( )) {
echo do_shortcode('[contact-form-7 id="304" title="Contact stock"]');
//echo "simple";
}
} elseif( $product->is_type( 'variable' ) ){
// a variable product
$count_in_stock == 0;
$variation_ids = $product->get_children(); // Get product variation IDs
foreach( $variation_ids as $variation_id ){
$variation = wc_get_product($variation_id);
if( $variation->is_in_stock() )
$count_in_stock++;
}
}
if( $count_in_stock == 0 ) {
echo do_shortcode('[contact-form-7 id="304" title="Contact stock"]');
//echo "variable";
}
}
答案 0 :(得分:0)
尝试以下代码,当产品“缺货”时,表格将替换数量字段并添加到购物车按钮(对于所有产品类型,包括可变产品) 。
您说“在简单产品上,它仍然显示'可变'形式” :这是因为您在简单产品和可变产品上都使用了相同的简码。 因此,您需要为简单产品添加正确的不同简码。
代码:
add_action( 'woocommerce_single_product_summary', 'action_single_product_summary_callback', 4 );
function action_single_product_summary_callback() {
global $product;
// Variable products
if ( $product->is_type( 'variable' ) ){
$count_in_stock = 0;
foreach ( $product->get_visible_children() as $variation_id ) {
$variation = wc_get_product($variation_id);
if( $variation->is_in_stock() ) {
$count_in_stock++;
}
}
if ( $count_in_stock === 0 ) {
// Remove quantity field and add to cart button
remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
// Display the contact form
add_action( 'woocommerce_single_variation', 'display_variable_product_out_of_stock_form', 20 );
}
}
// Other products (Simple … )
else {
if ( ! $product->is_in_stock() ) {
// Remove quantity field and add to cart button
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
// Display the contact form
add_action( 'woocommerce_single_product_summary', 'display_simple_product_out_of_stock_form', 30 );
}
}
}
// Form for variable products
function display_variable_product_out_of_stock_form() {
echo do_shortcode('[contact-form-7 id="304" title="Contact stock"]');
}
// Form for Simple products
function display_simple_product_out_of_stock_form() {
echo do_shortcode('[contact-form-7 id="304" title="Contact stock"]'); // <== NOT the correct shortcode
}
代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。