当前位置: 首页 > 知识库问答 >
问题:

如何将Woocomerce变量乘积的变量传递到变量的属性?

施晗日
2023-03-14

我有一个函数,它应该创建一个变量,并用变量乘积的值,属性填充变量。为了变得更加灵活,我没有为产品属性创造值

我试过上百种方法,使值坚持变化,但他们没有。变体是在后端创建的,但它没有Atributed??????请帮忙!!我做这个已经4天了。(

归属于产品atributes的唯一值是“空转”(>&gtempty<<)价值。////////////变量数据-&>;数组(key->Value),以便产品的Key==与产品相关的key->Value(key->Value)(key->Value);PRODUCT_ID

function add_variable_product_to_cart($product_id, $data) {

$my_post = array(
    'post_title'=> 'Order_Printaway',
    'post_name' => 'product_' . $data["itemIdentifier"],
    'post_status' => 'publish',
    'post_parent' => $product_id ,//post is a child post of product post
    'post_type' => 'product_variation',//set post type to product_variation
    'guid'=>home_url() . '/?product_variation=product_' . $data["itemIdentifier"]
);

//Insert ea. post/variation into database:
$attID = wp_insert_post( $my_post );    

update_post_meta($attID, '_price', $data["final_price"]);
update_post_meta($attID, '_regular_price', $data["final_price"]);

foreach($data as $key => $value){

    $avail_attributes = array($value);
    wp_set_object_terms($product_id, $avail_attributes, $key);

    $thedata[$key]['name'] = $value;

}

update_post_meta( $attID,'_product_attributes',$thedata);

if ( ! is_admin() ) {
    $found = false;
    //check if product already in cart
    if ( sizeof( WC()->cart->get_cart() ) > 0 ) {
        // if product not found, add it
        if ( ! $found ){
           WC()->cart->add_to_cart( $product_id, 1, $attID);

        }
    }
    else{
        // if no products in cart, add it
       WC()->cart->add_to_cart( $product_id, 1, $attID);
    }
}
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//Atributes产品-&>;

数组([a_color]=&>;数组([name]=&>a_color[value]=&>空置[position]=&>0[is_visible]=&>0[is_variation]=&>1[is_taxonomy]=&>0)[a_creasing]=&>数组([name]=>a_creasing[value]=>tempty&ltlt[position]=>1[is_visible]=>0[is_variation]=>1[is_taxonomy]=>0)[a_finishing]=>>数组([name]=&>a_finishing[value]=&>空置[position]=&>2[is_visible]=&>0[is_variation]=&>1[is_taxonomy]=&>0)[a_finishing_desc]=&>数组([name]=&>a_finishing_desc[value]=&>空置[position]=&>3[is_visible]=&>0[is_variation]=&>1[is_taxonomy]=&>0)[a_format_dir]=&>数组([name]=&>a_format_dir[value]=&>空置[position]=&>4[is_visible]=&>0[is_variation]=&>1[is_taxonomy]=&>0)[a_page]=&>数组([name]=&>a_page[value]=&>空置[position]=&>5[is_visible]=&>0[is_variation]=&>1[is_taxonomy]=&>0)[a_paper]=&>数组([name]=&>a_paper[value]=&>空置[posity]=&>6[is_visible]=&>0[is_variation]=&>1[is_taxonomy]=&>0)[a_paper_desc]=&>数组([name]=&>a_paper_desc[value]=&>空置[position]=&>7[is_visible]=&>0[is_variation]=&>1[is_taxonomy]=&>0)[a_perforation]=&>数组([name]=&>a_perforation[value]=&>空置[position]=&>8[is_visible]=&>0[is_variation]=&>1[is_taxonomy]=&>0)[a_processing]=&>数组([name]=&>a_processing[value]=&>空置[position]=&>9[is_visible]=&>0[is_variation]=&>1[is_taxonomy]=&>0)[product]=&>数组([name]=>product[value]=>empty<<[position]=>10[is_visible]=>0[is_variation]=>1[is_taxonomy]=>0)[shipping]=>>数组([name]=>shipping[value]=>empty<<[position]=>11[is_visible]=>0[is_variation]=>1[is_taxonomy]=>0))

null

数组([languageCode]=&>;数组([name]=&>en)[countryCode]=&>;数组([name]=&>GB)[saveItem]=&>;数组([name]=&>按名称保存项)[itemIdentifier]=&>数组([name]=&>asdasadasds)[product]=&>;数组([name]=&>flyer)[a_page]=&>;数组([name]=&>A_1stg)[a_format]=&>;数组([name]=&>A_105_x_148_mm_DIN-A-6)[a_format_dir]=&>;数组([name]=&>A_panel_format)[a_paper]=&>;数组([name]=&>A_115gqm_Bilderdruck)[a_paper_desc]=&>;数组([name]=&>A_paper_gloss_no_core)[a_color]=&>;数组([name]=&>A_4/0-Farbig_Euroskala)[a_finishing]=&>;数组([name]=&>A_Ohne_Finishing)[a_finishing_desc]=&>;数组([name]=&>A_Ohne_Veredelung)[a_processing]=&>;数组([name]=&>A_Cutt)[a_creasing]=&>;数组([name]=&>A_No_Groove)[a_perforation]=&>;数组([name]=&>A_No_Perfo)[quantity]=&>;数组([name]=&>100_quantition)[shipping]=&>;数组([name]=&>标准)[priceNet]=&>;数组([名称]=&>8,31)[价格毛额]=&>;数组([name]=&>9,97)[shippingNet]=&>;数组([name]=&>4,13)[shippinggros]=&>;数组([name]=&>4,96)[final_price]=&>;数组([name]=&>17.916))在get_post_meta(757,'_product_attributes',true)数组([0]=&>数组([languageCode]=&>之后的变体的属性;数组([name]=&>en)[countryCode]=&>;数组([name]=&>GB)[saveItem]=&>;数组([name]=&>按名称保存项)[itemIdentifier]=&>数组([name]=&>asdasadasds)[product]=&>;数组([name]=&>flyer)[a_page]=&>;数组([name]=&>A_1stg)[a_format]=&>;数组([name]=&>A_105_x_148_mm_DIN-A-6)[a_format_dir]=&>;数组([name]=&>A_panel_format)[a_paper]=&>;数组([name]=&>A_115gqm_Bilderdruck)[a_paper_desc]=&>;数组([name]=&>A_paper_gloss_no_core)[a_color]=&>;数组([name]=&>A_4/0-Farbig_Euroskala)[a_finishing]=&>;数组([name]=&>A_Ohne_Finishing)[a_finishing_desc]=&>;数组([name]=&>A_Ohne_Veredelung)[a_processing]=&>;数组([name]=&>A_Cutt)[a_creasing]=&>;数组([name]=&>A_No_Groove)[a_perforation]=&>;数组([name]=&>A_No_Perfo)[quantity]=&>;数组([name]=&>100_quantition)[shipping]=&>;数组([name]=&>标准)[priceNet]=&>;数组([名称]=&>8,31)[价格毛额]=&>;数组([name]=&>9,97)[shippingNet]=&>;数组([name]=&>4,13)[shippinggros]=&>;数组([name]=&>4,96)[final_price]=&>;数组([name]=&>17.916))

共有1个答案

颛孙品
2023-03-14

null

null

        if ( $attribute['is_taxonomy'] ) {
            $options = wc_get_product_terms( $post_id, $attribute['name'], array( 'fields' => 'slugs' ) );
        } else {
            $options = explode( WC_DELIMITER, $attribute['value'] );
        }

并用段块或字符串值填充attr_val。

 update_post_meta( $post_id, 'attribute_' . sanitize_title($attribute['name'] ), $attr_val);

wc_ajax::save_attributes()可能会有帮助

 类似资料:
  • 问题内容: 如何在不刷新页面的情况下将变量从jQuery传递到PHP?当我单击一个复选框时,我想将一个变量从jQuery传递到PHP。我也在使用formdialog。 我的PHP代码 我的JavaScript代码 问题答案: Ajax可以做到这一点。谷歌它,并检查api.jquery.com并查看ajax函数,.ajax(),.post(),.get(),.load()等。 关于您的特定问题,这是

  • 问题内容: 如何将值从javascript变量传递到razor变量,asp.net mvc razor视图引擎是否可能? 问题答案: 你不能 原因是他们不在同一时间“生活”。Razor变量是“服务器端变量”,在将页面发送到“客户端”后,它们不再存在。 当服务器收到视图请求时,它仅使用HTML,CSS和Javascript代码创建视图。没有C#代码,所有这些都被“翻译”为客户端语言。 当视图仍在服务

  • 问题内容: 我有Google地图提供的JavaScript值,需要将其保存在MySQL数据库中。 其实我有变量 我需要将该变量传递给PHP变量lugar 问题答案: 如果要在页面转换时进行操作,则可以通过表单或在URL中传递它,然后仅使用或接收变量。 如果您需要无缝完成它,那么您可能需要考虑使用AJAX。

  • 问题内容: 我迷路了。如何将循环变量传递给AJAX .done()调用? 显然,如果我要这样做, 我 将在每次迭代中返回对象中的最后一个键。文档使我失望。 问题答案: 您可以使用闭包(通过自执行函数)来捕获每次循环调用的值,如下所示:

  • 问题内容: 我需要更新我的时间。该值由正在执行的函数返回。 返回一个整数。 这将返回未防御状态。因此,我需要获取计数并将其传递给 问题答案: 如果您需要在每次调用之后更改重复间隔,则不能使用-使用恒定重复。您需要使用,因此您可以每次更改时间段:

  • 变量可以很简单地定义成可变(var)和不可变(val)的变量。这个与Java中使用的final很相似。但是不可变在Kotlin(和其它很多现代语言)中是一个很重要的概念。 一个不可变对象意味着它在实例化之后就不能再去改变它的状态了。如果你需要一个这个对象修改之后的版本,那就会再创建一个新的对象。这个让编程更加具有健壮性和预估性。在Java中,大部分的对象是可变的,那就意味着任何可以访问它这个对象的