添加可变产品WooCommerce时出现问题

时间:2016-08-16 作者:Mehar

我实际上是在woocommerce中添加变量产品,但在管理面板中创建的产品始终是一个简单的产品。我正在使用以下代码设置product type变量。

$producttype = wp_set_object_terms($post_id, \'variable\', \'product_type\');
当我在中打印输出时$producttype 它说“无效的分类法”。

这背后的问题是什么?

2 个回复
SO网友:SuperNERD

不确定要在何处添加代码,但有一种普遍接受的方法可以做到这一点,这里对其进行了很好的概述: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>

SO网友:kaiser

你的问题是你的分类法not registered. 查看的输出get_taxonomies() 在页面末尾,查看可用的分类法:

add_action( \'shutdown\', function() {
    printf( \'<pre>%s</pre>\', var_export( get_taxonomies(), TRUE ) );
}, PHP_MAX_INT -1 );

相关推荐