将产品页面中的字段数据保存到购物车并结帐

时间:2019-09-17 13:05:31

标签: wordpress woocommerce

我使用插件Custom fields添加了几个组。之后,我在产品页面上显示了它们,并尝试在添加产品时保存它们,但它们未出现在$_POST数组中。我的代码如下:

add_action('woocommerce_single_product_summary', 'display_custom_meta_field_value', 25 );
function display_custom_meta_field_value() {
    global $product;

    $type = get_post_meta( $product->get_id(),'pers_type', true );
    $label = get_post_meta( $product->get_id(),'pers_label', true );
    $value = get_post_meta( $product->get_id(),'pers_value', true );

    $type_one = get_post_meta( $product->get_id(),'pers_type_one', true );
    $label_one = get_post_meta( $product->get_id(),'pers_label_one', true );
    $value_one = get_post_meta( $product->get_id(),'pers_value_one', true );

    $type_two = get_post_meta( $product->get_id(),'pers_type_two', true );
    $label_two = get_post_meta( $product->get_id(),'pers_label_two', true );
    $value_two = get_post_meta( $product->get_id(),'pers_value_two', true );

    $type_three = get_post_meta( $product->get_id(),'pers_type_three', true );
    $label_three = get_post_meta( $product->get_id(),'pers_label_three', true );
    $value_three = get_post_meta( $product->get_id(),'pers_value_three', true );

    $type_four = get_post_meta( $product->get_id(),'pers_type_four', true );
    $label_four = get_post_meta( $product->get_id(),'pers_label_four', true );
    $value_four = get_post_meta( $product->get_id(),'pers_value_four', true );

    $type_five = get_post_meta( $product->get_id(),'pers_type_five', true );
    $label_five = get_post_meta( $product->get_id(),'pers_label_five', true );
    $value_five = get_post_meta( $product->get_id(),'pers_value_five', true );

    if ($type) {
        echo "<div id='personalisation_wrapper'>";
            echo "<h5 style='color: #50c5da'>Personalisation</h5>";
            renderPersonalisation($type, $label, $value, "pers");
            renderPersonalisation($type_one, $label_one, $value_one, "pers_one");
            renderPersonalisation($type_two, $label_two, $value_two, "pers_two");
            renderPersonalisation($type_three, $label_three, $value_three, "pers_three");
            renderPersonalisation($type_four, $label_four, $value_four, "pers_four");
            renderPersonalisation($type_five, $label_five, $value_five, "pers_five");
        echo "</div>";
    }
}

function renderPersonalisation($type, $label, $value, $name) {
    if ($type) {
        if( $type == 'Text' ) {
            echo  '<p style="margin-bottom: 2px;" id="pers_label_one">' . $label . '</p>';
            echo  '<input style="border: 1px solid #ccc!important; background: none!important" class="pers_inputs" placeholder="'.$value.'" type="text" name="'.$name.'" >';
        } else {
            $values = explode("\n", $value);
            echo  '<p style="margin-bottom: 2px;" id="pers_label_one">' . $label . '</p>';
            echo  '<select style="
                border: 1px solid #ccc!important;
                background: url(image/select_arrow.png) no-repeat center right!important;
            " class="pers_inputs" name="'.$name.'" >';
            foreach ($values as $k => $v) {
                echo "<option value='".$v."' >".$v."</option>";
            }
            echo "</select>";
        }
    }
}

// Save custom personalisation to cart item
add_filter( 'woocommerce_add_cart_item_data', 'save_custom_fields_data_to_cart', 10, 2 );
function save_custom_fields_data_to_cart( $cart_item_data, $product_id ) {
var_dump($_POST);die;

}

这些字段具有名称,看不到为什么它们没有出现在转储数组中。谢谢!

0 个答案:

没有答案