十一年专注,只做WordPress定制开发一件事

Woocommerce为产品数据添加自定义选项卡及字段

王超
2023-04-05
Woocommerce开发
1,669 次

Woocommerce默认的产品数据选项卡及字段儿信息有时无法满足我们对产品数据管理的需要,这个时候我们可以通过给产品创建自定义字段的方法添加数据,单纯从添加自定义字段方面来说的话,可以使用WordPress给文章添加自定义字段的方法,也可以只用自定义字段插件,比如高级自定义字段插件或者专门针对Woocommerce创建自定义字段的插件。但是我们还可以通过以下的方式为产品添加一个自定义选项卡并在这个选项卡里添加自定义字段,这样既减少了插件的使用,同时也实现了和Woocommerce产品编辑页面统一的风格。

1、为Woocommerce产品数据添加自定义选项卡

//添加产品设置新的选项卡  
add_filter('woocommerce_product_data_tabs', function ($tabs) {  
    $tabs[ 'custom_tab' ] = [  
        'label'    => "批发设置",  
        'target'   => 'product_wholesal_settings',  
        'class'    => [ 'show_if_simple','show_if_variable','show_if_grouped','show_if_external'],  
        'priority' => 25,  
    ];  
	return $tabs;  
}); 

注意以下里面的class的设置,'show_if_simple','show_if_variable','show_if_grouped','show_if_external'分别代表着在何种产品类型中显示。

2、添加产品自定义字段到新创建的选项卡

//添加产品字段到新添加的选项卡  
add_action('woocommerce_product_data_panels', function (){  
    ?>  
    <!--下面的id要和上面创建的选项卡的target保持一致-->  
    <div id="product_wholesal_settings" class="panel woocommerce_options_panel hidden">  
        <?php  
            $pro_custom_title = get_post_meta(get_the_ID(),'pro_custom_title',true);  
            $is_wholesal = get_post_meta(get_the_ID(),'is_wholesal',true);   
            $product_power = get_post_meta(get_the_ID(),'product_power',true);   
            $wholesal_mini_count = get_post_meta(get_the_ID(),'wholesal_mini_count',true);   
            $wholesal_price = get_post_meta(get_the_ID(),'wholesal_price',true);   
            woocommerce_wp_text_input([  
                'id'            => 'pro_custom_title',  
                'label'         => '自定义标题',  
                'value' => $pro_custom_title,  
            ]);  
            woocommerce_wp_checkbox([  
                'id'            => 'is_wholesal',  
                'label'         => '是否支持批发',  
                'value' => $is_wholesal,  
            ]);  
            woocommerce_wp_text_input([  
                'id'            => 'product_power',  
                'label'         => '产品功率',  
                'value' => $product_power,  
                'type'  => 'number'  
            ]);  
            woocommerce_wp_text_input([  
                'id'            => 'wholesal_mini_count',  
                'label'         => '起批数量',  
                'value' => $wholesal_mini_count,  
                'type'  => 'number'  
            ]);  
            woocommerce_wp_text_input([  
                'id'            => 'wholesal_price',  
                'label'         => '批发价格',  
                'value' => $wholesal_price,  
                'type'  => 'number'  
            ]);  
        ?>  
    </div>  
<?php  
}); 

3、保存自定义字段儿数据到产品

//保存自定义字段数据到产品  
add_action('woocommerce_process_product_meta', function ($post_id)  
{  
    $product = wc_get_product($post_id);  
  
    $product->update_meta_data('pro_custom_title', sanitize_text_field($_POST[ 'pro_custom_title' ]));  
  
    $is_wholesal = isset($_POST[ 'is_wholesal' ]) ? 'yes' : '';  
    $product->update_meta_data('is_wholesal', $is_wholesal);  
  
    $product->update_meta_data('product_power', sanitize_text_field($_POST[ 'product_power' ]));  
  
    $product->update_meta_data('wholesal_mini_count', sanitize_text_field($_POST[ 'wholesal_mini_count' ]));  
  
    $product->update_meta_data('wholesal_price', sanitize_text_field($_POST[ 'wholesal_price' ]));  
  
    $product->save();  
}); 

以上就是实现给Woocommerce产品数据添加自定义选项卡以及自定义字段儿的方法,您可以参考以上方法添加您自己的选项卡和自定义字段儿。

WordPress日记主要承接WordPress主题定制开发PSD转WordPressWordPress仿站以及以WordPress为管理后端的小程序、APP,我们一直秉持“做一个项目,交一个朋友”的理念,希望您是我们下一个朋友。如果您有WordPress主题开发需求,可随时联系QQ:919985494 微信:18539976310

搜索

嘿,有问题找我来帮您!