get_price(); } function fansub_wc_product_price($post_id = null) { $price = fansub_wc_get_product_price($post_id); echo fansub_wc_format_price($price); } function fansub_wc_format_price($price) { return wc_price($price); } function fansub_wc_get_product_total_sales($post_id = null) { if(!fansub_id_number_valid($post_id)) { $post_id = get_the_ID(); } return absint(fansub_get_post_meta('total_sales', $post_id)); } function fansub_wc_get_shop_page() { $id = get_option('woocommerce_shop_page_id'); return get_post($id); } function fansub_wc_get_cart_url() { global $woocommerce; return $woocommerce->cart->get_cart_url(); } function fansub_wc_get_checkout_url() { return wc_get_checkout_url(); } function fansub_wc_count_cart() { global $woocommerce; return $woocommerce->cart->cart_contents_count; } function fansub_wc_get_cart_total_formatted() { global $woocommerce; return $woocommerce->cart->get_cart_total(); } function fansub_wc_get_cart_total() { global $woocommerce; return $woocommerce->cart->total; } function fansub_wc_is_variable($product) { return $product->is_type('variable'); } function fansub_wc_get_cart_items() { global $woocommerce; $items = $woocommerce->cart->get_cart(); return $items; } function fansub_wc_get_add_to_cart($args = array()) { $post_id = isset($args['post_id']) ? absint($args['post_id']) : get_the_ID(); $product = wc_get_product($post_id); if(!$product->is_type('simple')) { return ''; } $sku = isset($args['sku']) ? $args['sku'] : $product->get_sku(); $style = isset($args['style']) ? $args['style'] : ''; $price = $product->get_price(); $container_class = isset($args['container_class']) ? $args['container_class'] : ''; fansub_add_string_with_space_before($container_class, 'custom-add-to-cart fansub-add-to-cart'); if(0 == $price) { fansub_add_string_with_space_before($container_class, 'please-call'); } $field_class = isset($args['field_class']) ? $args['field_class'] : ''; $quantity = isset($args['quantity']) ? absint($args['quantity']) : 1; $show_price = isset($args['show_price']) ? (bool)$args['show_price'] : true; $show_price = ($show_price) ? 'true' : 'false'; $shortcode = do_shortcode('[add_to_cart id="' . $post_id . '" sku="' . $sku . '" style="' . $style . '" class="' . $field_class . '" show_price="' . $show_price . '" quantity="' . $quantity . '"]'); return '
' . $shortcode . '
'; } function fansub_wc_add_to_cart($args = array()) { echo fansub_wc_get_add_to_cart($args); } function fansub_wc_insert_order($data) { $post_id = fansub_get_value_by_key($data, 'post_id'); if(fansub_id_number_valid($post_id)) { $post = get_post($post_id); if(is_a($post, 'WP_Post') && 'product' == $post->post_type) { $product = wc_get_product($post_id); $variable_product = new WC_Product_Variable($product); $variations = $variable_product->get_available_variations(); $variation_args = array(); $variation_id = null; foreach($variations as $variation) { $variation_id = $variation['variation_id']; $variation_args['variation'] = $variation['attributes']; } $name = fansub_get_value_by_key($data, 'name'); $phone = fansub_get_value_by_key($data, 'phone'); $email = fansub_get_value_by_key($data, 'email'); $address = fansub_get_value_by_key($data, 'address'); $message = fansub_get_value_by_key($data, 'message'); $name = fansub_sanitize_first_and_last_name($name); $attributes = fansub_get_value_by_key($data, 'attributes'); $addresses = array( 'first_name' => $name['first_name'], 'last_name' => $name['last_name'], 'email' => $email, 'phone' => $phone, 'address_1' => $address ); $args = array( 'customer_note' => $message, 'created_via' => 'programmatically' ); if(is_user_logged_in()) { $current = wp_get_current_user(); $args['customer_id'] = $current->ID; } $order = wc_create_order($args); $gateway = WC_Payment_Gateways::instance(); $gateways = $gateway->get_available_payment_gateways(); if(fansub_array_has_value($gateways)) { $gateway = current($gateways); $order->set_payment_method($gateway); } $order->set_address($addresses); $order->set_address($addresses, 'shipping'); if(fansub_array_has_value($attributes) && fansub_id_number_valid($variation_id)) { foreach($attributes as $attribute) { $attribute_name = fansub_get_value_by_key($attribute, 'name'); $attribute_value = fansub_get_value_by_key($attribute, 'value'); if(!empty($attribute_name) && !empty($attribute_value)) { if(isset($variation_args['variation'][$attribute_name])) { $variation_args['variation'][$attribute_name] = $attribute_value; } } } $variation_product = new WC_Product_Variation($variation_id); $order->add_product($variation_product, 1, $variation_args); } else { $order->add_product($product); } $order->record_product_sales(); $order->calculate_totals(); $order->payment_complete(); return $order; } } return false; } function fansub_wc_get_cart_preview_html() { $cart_preview = ''; $cart_items = fansub_wc_get_cart_items(); $cart_preview .= ''; $cart_preview = apply_filters('fansub_wc_cart_preview_html', $cart_preview); return $cart_preview; } function fansub_wc_get_cart($args = array()) { $lang = fansub_get_language(); $title = isset($args['title']) ? $args['title'] : (('vi' == $lang) ? 'Thông tin giỏ hàng' : __('View your shopping cart', 'fansub')); $show_item = isset($args['show_item']) ? (bool)$args['show_item'] : true; $show_price = isset($args['show_price']) ? (bool)$args['show_price'] : true; $show_icon = isset($args['show_icon']) ? (bool)$args['show_icon'] : true; $show_preview = isset($args['show_preview']) ? (bool)$args['show_preview'] : true; $cart = '
'; $cart .= ''; if($show_icon) { $cart .= ''; } if($show_item) { $count_cart = fansub_wc_count_cart(); $item_text = $count_cart . ' sản phẩm'; if('vi' != $lang) { $item_text = sprintf(_n('%d item', '%d items', $count_cart, 'fansub'), $count_cart); } $cart .= '' . $item_text . ''; if($show_price) { $cart .= ' - '; } } if($show_price) { $cart .= fansub_wc_get_cart_total_formatted(); } if($show_preview) { $cart .= ''; } $cart .= ''; if($show_preview) { $cart .= fansub_wc_get_cart_preview_html(); } $cart .= '
'; return apply_filters('fansub_wc_cart', $cart, $args); } function fansub_wc_cart($args = array()) { $before = fansub_get_value_by_key($args, 'before'); echo $before; do_action('fansub_wc_cart_before'); echo fansub_wc_get_cart($args); do_action('fansub_wc_cart_after'); if(!empty($before)) { $after = fansub_get_value_by_key($args, 'after'); echo $after; } } function fansub_wc_the_cart($args = array()) { echo '
'; fansub_wc_cart($args); echo '
'; } function fansub_wc_get_content_single_product() { wc_get_template_part('content', 'single-product'); } function fansub_wc_use_fast_buy_button() { $use = apply_filters('fansub_wc_use_fast_buy_button', true); return $use; } $fansub_shop_site = apply_filters('fansub_shop_site', false); if(!(bool)$fansub_shop_site) { return; } function fansub_wc_after_single_product_title_hook() { do_action('fansub_wc_after_single_product_title'); } add_action('woocommerce_single_product_summary', 'fansub_wc_after_single_product_title_hook', 6); function fansub_wc_after_single_product_add_to_cart_button() { do_action('fansub_wc_after_single_product_add_to_cart_button'); } add_action('woocommerce_single_product_summary', 'fansub_wc_after_single_product_add_to_cart_button', 31); function fansub_wc_single_product_fast_buy_button() { $use = fansub_wc_use_fast_buy_button(); if($use) { global $product; $button_text = apply_filters('fansub_wc_fast_buy_button_text', __('Mua hàng nhanh', 'fansub')); $button_description = apply_filters('fansub_wc_fast_buy_button_description', __('Đặt hàng nhanh, không cần thêm sản phẩm vào giỏ hàng.', 'fansub')); ?> false ); $post_id = fansub_get_method_value('post_id'); if(fansub_id_number_valid($post_id)) { $WC = WC(); $updated = false; foreach($WC->cart->get_cart() as $cart_item_key => $cart_item) { $prod_id = $cart_item['product_id']; if($post_id == $prod_id) { $WC->cart->set_quantity($cart_item_key, 0, true); $updated = true; break; } } if($updated) { $cart_contents = fansub_wc_add_to_cart_fragments(array()); $cart_contents = fansub_get_value_by_key($cart_contents, 'div.fansub-cart-contents'); if(empty($cart_contents)) { $updated = false; } else { $result['cart_contents'] = $cart_contents; } } $result['updated'] = $updated; } wp_send_json($result); } add_action('wp_ajax_fansub_wc_remove_cart_item', 'fansub_wc_remove_cart_item_ajax_callback'); add_action('wp_ajax_nopriv_fansub_wc_remove_cart_item', 'fansub_wc_remove_cart_item_ajax_callback'); function fansub_wc_order_item_ajax_callback() { $result = array( 'success' => false, 'html_data' => '

Đã có lỗi xảy ra, xin vui lòng thử lại sau.

' ); $post_id = fansub_get_method_value('post_id'); if(fansub_id_number_valid($post_id)) { $post = get_post($post_id); if(is_a($post, 'WP_Post') && 'product' == $post->post_type) { $name = fansub_get_method_value('name'); $phone = fansub_get_method_value('phone'); $email = fansub_get_method_value('email'); $address = fansub_get_method_value('address'); $message = fansub_get_method_value('message'); $attributes = fansub_get_method_value('attributes'); $order = fansub_wc_insert_order(array( 'post_id' => $post_id, 'name' => $name, 'email' => $email, 'phone' => $phone, 'address' => $address, 'message' => $message, 'attributes' => $attributes )); if(false !== $order) { $result['success'] = true; $result['html_data'] = '

Đơn hàng của bạn đã được lưu thành công, chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất.

'; } } } wp_send_json($result); } add_action('wp_ajax_fansub_wc_order_item', 'fansub_wc_order_item_ajax_callback'); add_action('wp_ajax_nopriv_fansub_wc_order_item', 'fansub_wc_order_item_ajax_callback'); function fansub_wc_after_cart_table() { $page = fansub_wc_get_shop_page(); $permalink = apply_filters('fansub_return_shop_url', get_permalink($page)); ?>