【问题标题】:Automatic product insert via soap on WooCommerce product creation在 WooCommerce 产品创建中通过肥皂自动插入产品
【发布时间】:2020-10-15 19:17:21
【问题描述】:

我有一个计费程序,并将该程序连接到我在 wordpress 中的在线商店,我使用了一个插件,但现在我被要求进行以下更新:

  • 每当我们在 woocommerce 上创建产品时,它也会在计费程序中自动创建

我向计费程序支持寻求帮助,他们给了我以下示例

 $result = $soap->authenticate($API_KEY);
 $APISession = $结果[1];
 
 
 $ref = "002";
 $designation = "产品测试";
 $shortName = "Ptest";
 $税=“23”;
 $obs = "睾丸";
 $isService = "0";
 $hasStocks = "0";
 $活跃=“1”;
 $shortDesc = "描述 123";
 $longDesc = "Descricao longa, teste 123.";
 $价格=“100”;
 $vendorRef = "";
 $ean = "";
 

 $product = $soap->insertProduct( $APISession, $ref, $designation, $shortName, $tax, $obs, $isService, $hasStocks, $active, $shortDesc, $longDesc, $price, $vendorRef, $ean );

但这不是我想要的,因为我们在此示例中手动插入参数并且我希望自动插入,我向计费程序的支持人员解释了这一点,但他们说他们无法帮助我,所以我在这里问,希望有人可以帮助我。

注意:这些参数是计费程序参数,我想用来自 woocommerce 产品的内容填充这些参数,我正在使用 webhook 调用函数“insertProduct”

【问题讨论】:

    标签: php wordpress soap woocommerce product


    【解决方案1】:

    钩子woocommerce_new_product在创建产品时触发,所以它是你需要的钩子。所以你不需要 webhook,因为 soap 就可以完成这项工作。

    现在您需要在下面的代码中定义变量$soap$API_KEY

    另请注意,在 WooCommerce 产品中,变量 $shortName$tax$obs$isService$vendorRef$ean 不会退出。

    你的代码应该是这样的:

    // On product creation
    add_action( 'woocommerce_new_product', 'woocommerce_create_product_callbback', 10, 4 );
    function woocommerce_create_product_callbback( $product_id ) {
        // First define variables $soap and $API_KEY
        $soap       = ; // <== To be defined !
        $API_KEY    = ; // <== To be defined !
        
        // Connect
        $result     = $soap->authenticate( $API_KEY );
        $APISession = $result[1];
    
        if( $APISession ) {
            // Get_the WC_Product Object
            $product = wc_get_product( $product_id );
            
            // Product data
            $status             = $product->get_status();
            $name               = $product->get_name();
            $description        = $product->get_description();
            $short_descr        = $product->get_short_description();
            $parent_id          = $product->get_parent_id();
            $menu_order         = $product->get_menu_order();
            $date_created       = $product->get_date_created()->getOffsetTimestamp();
            $date_created_gmt   = $product->get_date_created()->getTimestamp();
            $slug               = $product->get_slug();
            $author_id          = get_post_field ('post_author', $product_id);
            
            // Product meta data (and post terms)
            $type               = $product->get_type();
            $tax_class          = $product->get_tax_class();
            $stock_status       = $product->get_stock_status();
            $price              = $product->get_price();
            $sku                = $product->get_sku();
            
            // Special
            $active             = $product->get_status() ==='publish' ? '1' : '0';
            $hasStocks          = $product->is_in_stock() ? '1' : '0';
             
            // Undefined (not defined in WooCommerce
            $shortName  = '';
            $tax        = '';
            $obs        = '';
            $isService  = '0';
            $vendorRef  = ''; // May be the author ID
            $ean        = ''; // May be the SKU
            
            // Send data and insert product
            $soap->insertProduct( $session, $product_id, $name, $shortName, $tax, $obs, $isService, $hasStocks, $active, $short_descr, $description, $price, $vendorRef, $ean);
        }
    }
    

    代码在您的活动子主题(或活动主题)的functions.php 文件中。它应该可以工作。

    【讨论】:

    • 什么意思?
    • 我想知道如果我把这段代码放在代码sn-p而不是functions.php中,它会产生同样的效果吗?
    • 您可以使用代码 sn-ps 插件、主题的 function.php 文件或您制作的自定义插件... 如果此代码回答了您的问题,您可以请accept 回答,谢谢你。
    • 是的,我仍在测试,这就是为什么我没有将其标记为正确的原因,我使用的是 webhook,所以我不需要那个“add_action”,对吗?
    • @HugoAndré 我认为你不需要那个 webhook,因为当在 WooCommerce 上创建产品时,WooCommerce 将触发将产品插入计费程序的操作......所以我的完整代码应该可以解决问题,但是您需要通过insertProduct() 方法正确设置计费程序所需的SOAP 部分和每个变量。可能会再次询问计费程序的支持,添加此答案的链接...
    猜你喜欢
    • 2021-11-25
    • 2012-07-15
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 2016-10-03
    相关资源
    最近更新 更多