WooCommerce Create and Display Order Item Meta
<?php
// Add 'Day Selection' on Weekly Package
add_action('woocommerce_before_add_to_cart_button', 'bwi_amazing_add_weekly_package_options', 9, 0);
if (!function_exists('bwi_amazing_add_weekly_package_options'))
{
function bwi_amazing_add_weekly_package_options()
{
global $woocommerce;
$product_id = get_the_ID();
$term = array( 'paket-weekly', 'paket-daily' );
$taxonomy = 'product_cat';
// if ( count(wp_get_object_terms( $product_id, 'paket-weekly' )) > 0 )
if ( has_term( $term, $taxonomy, $product_id ) )
{
$package_type = get_field( 'tipe_paket', $product_id );
$selection = '<div class="weekly-options-container">';
for ($i = 0; $i < $package_type; $i++)
{
$day = $i + 1;
$selection .= '<div class="weekly-option-item">Hari '. $day .' : ';
$selection .= '<select class="weekly-options" name="field_day[]">';
$selection .= '<option value="Senin">Senin</option>';
$selection .= '<option value="Selasa">Selasa</option>';
$selection .= '<option value="Rabu">Rabu</option>';
$selection .= '<option value="Kamis">Kamis</option>';
$selection .= '<option value="Jumat">Jumat</option>';
$selection .= '<option value="Sabtu">Sabtu</option>';
$selection .= '</select>';
$selection .= '</div>';
}
$selection .= '</div>';
echo $selection;
}
}
}
add_filter('woocommerce_add_cart_item_data', 'bwi_add_cart_item_data', 10, 2);
function bwi_add_cart_item_data($cart_item_meta, $product_id)
{
global $woocommerce;
if ( isset($_POST['field_day']) )
{
foreach ($_POST['field_day'] as $key => $value)
{
$cart_item_meta['_bwi_package_day'][$key] = ( isset( $_POST['field_day'][$key] ) && $_POST['field_day'][$key] != '') ? $_POST['field_day'][$key] : '';
}
}
return $cart_item_meta;
}
add_filter('woocommerce_get_cart_item_from_session', 'bwi_get_cart_item_from_session', 10, 2);
function bwi_get_cart_item_from_session($cart_item, $values)
{
if (isset($values['_bwi_package_day']))
{
$cart_item['_bwi_package_day'] = $values['_bwi_package_day'];
// echo $values['_bwi_package_day_1'];
}
return $cart_item;
}
add_action('woocommerce_add_order_item_meta', 'bwi_add_order_item_meta', 1, 2);
function bwi_add_order_item_meta($itemID, $values)
{
$package_day = $values['_bwi_package_day'];
if ( !empty($package_day) )
{
foreach ($package_day as $key => $value)
{
$meta_label = 'Day ' . ($key + 1);
wc_add_order_item_meta($itemID, $meta_label, $value);
}
}
}
// Display Selected Days on Cart Item
add_filter( 'woocommerce_cart_item_name', 'render_meta_on_cart_item', 1, 3 );
function render_meta_on_cart_item( $title = null, $cart_item = null, $cart_item_key = null )
{
if ( $cart_item_key && is_cart() )
{
echo $title;
if ( isset($cart_item['_bwi_package_day']) )
{
$selected_days_string = '<div class="cart-package-selected-days">';
foreach ($cart_item['_bwi_package_day'] as $key => $value)
{
$day_string = 'Day ' . ($key + 1) . ' : ' . $value;
$selected_days_string .= '<p>'. $day_string .'</p>';
}
$selected_days_string .= '</div>';
echo $selected_days_string;
}
}
else
{
echo $title;
}
}
?>