fazlurr
7/1/2015 - 4:47 AM

WooCommerce Create and Display Order Item Meta

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;
		}
	}
?>