Php 将产品附加域添加到WooCommerce上的特定产品

Php 将产品附加域添加到WooCommerce上的特定产品,php,wordpress,woocommerce,cart,checkout,Php,Wordpress,Woocommerce,Cart,Checkout,我需要将代码更改为不在所有WooCommerce产品上显示文本区域,但只显示2个,这是在我的WordPress子主题的functions.php文件下 我已将$product\U id更改为$product\U id=2130(我的特定产品id), 不确定是否要更改所有$product\u id或$\u POST以使此代码仅显示在2个产品上 它是针对一个或多个具有名称的个性化产品。我尝试将代码$product\u id更改为许多其他扩展,但都没有成功。我不确定是应该用什么代码替换所有$produ

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

我已将$product\U id更改为
$product\U id=2130
(我的特定产品id), 不确定是否要更改所有
$product\u id
$\u POST
以使此代码仅显示在2个产品上

它是针对一个或多个具有名称的个性化产品。我尝试将代码$product\u id更改为许多其他扩展,但都没有成功。我不确定是应该用什么代码替换所有$product\u id,还是应该在
$\u 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;
}

add_action( 'woocommerce_add_order_item_meta', 'custom_product_add_on_order_item_meta', 10, 2 );
function custom_product_add_on_order_item_meta( $item_id, $values ) {
    if ( ! empty( $values['custom_text_add_on'] ) ) {
        wc_add_order_item_meta( $item_id, 'Custom Text Add-On', 
$values['custom_text_add_on'], true );
    }
}

add_filter( 'woocommerce_order_item_product', 'custom_product_add_on_display_order', 10, 2 );
function custom_product_add_on_display_order( $cart_item, $order_item ){
    if( isset( $order_item['custom_text_add_on'] ) ){
        $cart_item_meta['custom_text_add_on'] = 
$order_item['custom_text_add_on'];
    }
    return $cart_item;
}

add_filter( 'woocommerce_email_order_meta_fields', 'custom_product_add_on_display_emails' );
function custom_product_add_on_display_emails( $fields ) { 
    $fields['custom_text_add_on'] = 'Custom Text Add-On';
    return $fields; 
}
add_操作('woocommerce_前添加_至_cart_按钮','custom_product_添加_on',9);
函数自定义\产品\添加\ on(){
$value=isset($发布[''自定义文本添加])?清理文本字段($发布[''自定义文本添加]):'';
回声'
自定义文本加载项*

'; } 添加过滤器('woocommerce'u add'u to'u cart'u validation'、'custom'u product'u add'u on'u validation',10,3); 函数自定义产品添加验证($passed,$product,$qty){ 如果(设置($发布[''自定义文本添加])&清理文本字段( $\u POST[''自定义文本添加']=''){ wc_add_通知(“自定义文本加载项是必填字段”,“错误”); $passed=false; } 返回$passed; } 添加过滤器('woocommerce\u add\u cart\u item\u data','custom\u product\u add\u on\u cart\u item\u data',10,2); 函数自定义商品添加到购物车商品数据($cart商品,$product商品id){ 如果(isset($发布[''自定义文本添加]){ $cart\u item['custom\u text\u add\u on']=清理文本字段( $发布[''自定义文本添加]; } 返回$cart\u项目; } 添加过滤器('woocommerce\u get\u item\u data'、'custom\u product\u add\u on\u display\u cart',10,2); 功能自定义\产品\在\显示\购物车上添加\购物车($\数据,$购物车\项目){ 如果(设置($cart\u item['custom\u text\u add\u on'])){ $data[]=数组( “名称”=>“自定义文本加载项”, 'value'=>sanitize_text_字段($cart_item['custom_text_add_on'])) ); } 返回$data; } 添加操作('woocommerce\u add\u order\u item\u meta','custom\u product\u add\u on\u order\u item\u meta',10,2); 函数自定义\产品\添加\订单\项目\元($item\u id,$values){ 如果(!empty($values['custom\u text\u add\u on'])){ wc_添加_订单_项目_元($item_id,'自定义文本加载项', $values['custom_text_add_on'],true); } } 添加过滤器('woocommerce\u order\u item\u product'、'custom\u product\u add\u on\u display\u order',10,2); 功能自定义产品添加显示订单($cart\u item,$order\u item){ 如果(isset($order_item['custom_text_add_on'])){ $cart\u item\u meta['custom\u text\u add\u on']= $order_项目['自定义文字添加']; } 返回$cart\u项目; } 添加过滤器('woocommerce\u email\u order\u meta\u fields'、'custom\u product\u add\u on\u display\u emails'); 功能自定义产品添加显示电子邮件($fields){ $fields['custom_text_add_on']='custom text add on'; 返回$fields; }
我几乎在任何地方都重新访问了您的代码,进行了一些更改并删除了不必要的函数

您必须在
$defined\u products\u id
变量数组的前两个函数中定义所需的产品ID

我在变量产品中的下拉列表/加载项和添加到购物车按钮之间添加了一个12px的空间

完整代码:

// Display Product add on custom fields
add_action( 'woocommerce_before_add_to_cart_button', 'display_product_add_on_custom_fields', 9 );
function display_product_add_on_custom_fields() {
    global $product;

    $defined_products_ids = array( 37, 53 );

    if( in_array($product->get_id(), $defined_products_ids) ) {
        $value = isset($_POST['custom_text']) ? $_POST['custom_text'] : '';

        // Adding some space between dropdowns and add to cart button for variable products
        $style = $product->is_type('variable') ? ' style="padding-bottom:12px;"' : '';

        echo '<div class="product-add-on"' . $style . '>
            <label>'. __('Add your customized text', 'woocommerce') . ' ' .
                '<abbr class="required" title="required">*</abbr>
            </label>
            <p>
                <input name="custom_text" value="' . $value . '">
            </p>
        </div>';
    }
}

// Product add on custom fields validation
add_filter( 'woocommerce_add_to_cart_validation', 'product_add_on_custom_fields_validation', 10, 3 );
function product_add_on_custom_fields_validation( $passed, $product_id, $quantity ){
    $defined_products_ids = array( 37, 53 );

    if( isset( $_POST['custom_text'] ) && empty( $_POST['custom_text'] )
    && in_array($product_id, $defined_products_ids) ) {
         wc_add_notice( '"Custom Text" is a required field', 'error' );
         $passed = false;
    }
    return $passed;
}

// Add custom cart item data
add_filter( 'woocommerce_add_cart_item_data', 'add_custom_cart_item_data', 10, 2 );
function add_custom_cart_item_data( $cart_item_data, $product_id ){
    if( isset($_POST['custom_text']) ) {
        $cart_item_data['custom_text'] = sanitize_text_field( $_POST['custom_text'] );
        $cart_item_data['unique_key'] = md5( microtime().rand() ); // Make each item unique
    }
    return $cart_item_data;
}

// Display custom cart item data on cart and checkout
add_filter( 'woocommerce_get_item_data', 'display_custom_cart_item_data', 10, 2 );
function display_custom_cart_item_data( $cart_item_data, $cart_item ) {
    if ( isset( $cart_item['custom_text'] ) ){
        $cart_item_data[] = array(
            'name' => __('Your custom text', 'woocommerce'),
            'value' => $cart_item['custom_text'] // Already sanitized field
        );
    }
    return $cart_item_data;
}

// Save and display custom item data everywhere on orders and email notifications
add_action( 'woocommerce_checkout_create_order_line_item', 'add_product_custom_field_as_order_item_meta', 10, 4 );
function add_product_custom_field_as_order_item_meta( $item, $cart_item_key, $values, $order ) {
    if ( isset($values['custom_text']) ) {
        $item->update_meta_data('Your custom text', $values['custom_text'] );
    }
}
//在自定义字段上显示产品外接程序
添加操作(“在添加到购物车按钮之前添加商业”,“在自定义字段上显示产品添加”,9);
函数显示\产品\添加\自定义\字段(){
全球$产品;
$defined_products_id=数组(37,53);
if(在数组中($product->get\u id(),$defined\u products\u id)){
$value=isset($\u POST['custom\u text'])?$\u POST['custom\u text']:'';
//在下拉列表和“添加到购物车”按钮之间为可变产品添加一些空间
$style=$product->is_-type('variable')?'style=“padding-bottom:12px;”:“”;
回声'
“.”(“添加自定义文本”,“woocommerce”)。”。
'*

'; } } //产品附加模块自定义域验证 添加过滤器('woocommerce\u add\u to\u cart\u validation'、'product\u add\u on\u custom\u fields\u validation',10,3); 函数产品添加自定义字段验证($passed,$product,$id,$quantity){ $defined_products_id=数组(37,53); if(设置($\u POST['custom\u text'])和空($\u POST['custom\u text'])) &&在数组中($product\U id,$defined\U products\U id)){ wc_添加_通知(“‘自定义文本’是必填字段”,“错误”); $passed=false; } 返回$passed; } //添加自定义购物车项目数据 添加过滤器('woocommerce\u add\u cart\u item\u data','add\u custom\u cart\u item\u data',10,2); 函数add_custom_cart_item_data($cart_item_data,$product_id){ 如果(isset($_POST['custom_text'])){ $cart_item_data['custom_text']=清理_text_字段($\u POST['custom_text']); $cart_item_data['unique_key']=md5(microtime().rand());//使每个项目唯一 } 返回$cart\u item\u数据; } //在购物车上显示自定义购物车项目数据并结帐 添加过滤器('woocommerce\u get\u item\u data','display\u custom\u cart\u item\u data',10,2); 功能显示\自定义\购物车\项目\数据($cart\项目\数据,$cart\项目){ 如果(设置($cart\u item['custom\u text'])){ $cart\u item\u data[]=数组( 'name'=>\('您的自定义文本','woocommerce'), 'value'=>$cart\u item['custom\u text']//已清理字段 ); } 返回$cart\u item\u数据; } //在订单和电子邮件通知的任何位置保存和显示自定义项目数据 添加操作('woocommerce\u checkout\u create\u order\u line\u item'、'add\u product\u custom\u field\u as\u order\u item\u meta',10,4); 函数添加\产品\自定义\字段\作为\订单\项目_