在 WooCommerce 上为特定产品添加产品附加字段

我需要更改代码以不在我的所有 WooCommerce 产品上显示文本区域,但只有 2 个,这是在我的 WordPress 子主题functions.php文件下。


我已将 $product_id 更改为$product_id = 2130(my specific product id),不确定是否应该更改所有$product_id或$_POST此代码仅显示在 2 个产品上


它适用于使用名称个性化的特定产品。我曾尝试将代码 $product_id 更改为许多其他扩展名,但无济于事。我不确定我是否应该用什么代码替换所有的 $product_id,或者它应该在$_POST并替换所有代码。


add_action( 'woocommerce_before_add_to_cart_button', 'custom_product_add_on', 9 );  

function custom_product_add_on() {

    $value = isset( $_POST['_custom_text_add_on'] ) ? sanitize_text_field( $_POST['_custom_text_add_on'] ) : '';


    echo '<div>

        <label>Custom Text Add-On <abbr class="required" title="required">*</abbr></label>

        <p>

             <input name="_custom_text_add_on" value="' . $value . '">

        </p>

    </div>';

}


add_filter( 'woocommerce_add_to_cart_validation', 'custom_product_add_on_validation', 10, 3 );

function custom_product_add_on_validation( $passed, $product_id, $qty ){

    if( isset( $_POST['_custom_text_add_on'] ) && sanitize_text_field( 

$_POST['_custom_text_add_on'] ) == '' ) {

         wc_add_notice( 'Custom Text Add-On is a required field', 'error' );

         $passed = false;

    }

    return $passed;

}


add_filter( 'woocommerce_add_cart_item_data', 'custom_product_add_on_cart_item_data', 10, 2 );

function custom_product_add_on_cart_item_data( $cart_item, $product_id ){

    if( isset( $_POST['_custom_text_add_on'] ) ) {

        $cart_item['custom_text_add_on'] = sanitize_text_field( 

$_POST['_custom_text_add_on'] );

    }

    return $cart_item;

}


add_filter( 'woocommerce_get_item_data', 'custom_product_add_on_display_cart', 10, 2 );

function custom_product_add_on_display_cart( $_data, $cart_item ) {

    if ( isset( $cart_item['custom_text_add_on'] ) ){

        $data[] = array(

            'name' => 'Custom Text Add-On',

            'value' => sanitize_text_field( $cart_item['custom_text_add_on'] )

        );

    }

    return $data;

}


千巷猫影
浏览 178回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP