不确定要在何处添加代码,但有一种普遍接受的方法可以做到这一点,这里对其进行了很好的概述:How to add a new product type on woocommerce product types?
在Wordpress/Woocommerce“推荐”的方法中,有两种方法可以做到这一点。
1) 将需要这些新类等的文件复制到您的主题文件夹中,并复制到相同的文件夹结构/woocommerce文件夹中。从技术上讲,如果你更新了主题,你当然需要重新复制这个文件夹。
2) 你也可以在你的主题功能中完成这一切。php文件,这就是我所做的。
/////////////////////////////////
这正是我的代码的开头(您可以在下面看到product\\u type被声明为ta\\u fundraising\\u campaign):
/*******************************************************************************
* Fundraising custom product_type for WooCommerce.
******************************************************************************/
// add a product type
add_filter(\'product_type_selector\', \'ta_add_custom_product_type\');
function ta_add_custom_product_type($types)
{
$types[\'ta_fundraising_campaign\'] = __(\'Fundraising Campaign\');
return $types;
}
// create product class on plugins_loaded hook
add_action(\'plugins_loaded\', \'ta_create_custom_product_type\');
function ta_create_custom_product_type()
{
// declare the product class
class WC_Product_FundRaisingCampaign
extends WC_Product
{
public function __construct($product)
{
$product->product_type = \'ta_fundraising_campaign\';
parent::__construct($product);
}
}
}
/////////////////////////////////
现在,这里有一个棘手的部分-因为在互联网上几乎不支持为可变product\\u类型添加自定义product\\u类型。
如果您正试图创建自己的变量自定义product\\u类型,那么您可能需要添加一些“设置”,即允许您选择不同选项(如属性、库存和变体)的数据面板。
******以下是添加这些内容的方式:*******
add_filter(\'woocommerce_product_data_tabs\', function($tabs) {
array_push($tabs[\'inventory\'][\'class\'], \'show_if_variable show_if_membership show_if_ta_fundraising_campaign\');
array_push($tabs[\'variations\'][\'class\'], \'show_if_membership show_if_ta_fundraising_campaign\');
return $tabs;
}, 10, 1);
然后,由于某些原因,“用于变体”复选框可能不会显示在“属性”选项卡下。因此,您可能希望将其所在的文件复制到主题文件夹中,然后向类中添加show\\u if,如下所示:
这是复选框所在的文件(将其复制到中的woocommerce文件夹中your 主题文件夹具有完全相同的结构,即/yourtheme/woocommerce/includes/admin/meta-box/views/html产品属性。php):
插件/woocommerce/包含/管理/元框/视图/html产品属性。php
然后在该文件的底部,您将看到复选框(下面)。但是,请注意div类有2个show\\u if类。。。。第二个是我添加的,用于在自定义product\\u类型上显示它。希望这一切对其他人有所帮助,因为我花了很长时间才弄明白这一切!!
<div class="enable_variation show_if_variable show_if_ta_fundraising_campaign">
<label><input type="checkbox" class="checkbox" <?php checked( $attribute[\'is_variation\'], 1 ); ?> name="attribute_variation[<?php echo $i; ?>]" value="1" /> <?php _e( \'Used for variations\', \'woocommerce\' ); ?></label>
</div>