Hàm lưu tự động lại tất cả bài viết theo post type tùy chỉnh
21/11/2024
24/08/2023 - 272


Các bạn tham khảo đoạn code bên dưới nhé:
// Thêm trường tải ảnh lên trong chi tiết sản phẩm
add_action('woocommerce_before_add_to_cart_button', 'add_image_upload_field');
function add_image_upload_field()
{
echo '<div class="image-upload-field">';
echo '<h2>' . __('Upload an Image', 'woocommerce') . '</h2>';
?>
<div class="custom-file">
<input type="file" class="custom-file-input" name="order_image_upload" id="order_image_upload"
onchange="displayFileName(this)"/>
<label class="custom-file-label" for="order_image_upload" placeholder="No image">Choose image</label>
</div>
<script type="text/javascript">
function displayFileName(input) {
var fileName = input.files[0] ? input.files[0].name : '';
var label = input.nextElementSibling;
label.innerHTML = fileName || label.getAttribute('placeholder');
var file = input.files[0];
var reader = new FileReader();
reader.onload = function (e) {
var imageElement = document.createElement('img');
imageElement.src = e.target.result;
imageElement.width = 100;
imageElement.height = 100;
var label = input.nextElementSibling;
label.innerHTML = '';
label.appendChild(imageElement);
label.classList.add('custom-file-label2'); // Thêm class tùy chỉnh vào label
};
if (file) {
reader.readAsDataURL(file);
} else {
var label = input.nextElementSibling;
label.innerHTML = label.getAttribute('placeholder');
label.classList.remove('custom-file-label2'); // Xóa class tùy chỉnh khỏi label
}
}
</script>
<?php
}
// Lưu ảnh tải lên vào giỏ hàng
add_filter('woocommerce_add_cart_item_data', 'save_order_image_upload', 10, 2);
function save_order_image_upload($cart_item_data, $product_id)
{
if (isset($_FILES['order_image_upload']) && !empty($_FILES['order_image_upload']['tmp_name'])) {
$upload = wp_upload_bits($_FILES['order_image_upload']['name'], null, file_get_contents($_FILES['order_image_upload']['tmp_name']));
if (isset($upload['error']) && $upload['error'] != 0) {
wp_die('Error uploading file - ' . $upload['error']);
} else {
$cart_item_data['order_image_upload'] = $upload;
}
}
return $cart_item_data;
}
// Hiển thị ảnh tải lên trong giỏ hàng và trang thanh toán
add_filter('woocommerce_get_item_data', 'display_order_image_upload', 10, 2);
function display_order_image_upload($item_data, $cart_item)
{
if (isset($cart_item['order_image_upload'])) {
$item_data[] = array(
'key' => __('Uploaded Image', 'woocommerce'),
'value' => '<img src="' . $cart_item['order_image_upload']['url'] . '" width="100" height="100" />',
);
}
error_log(print_r($item_data, true)); // Ghi thông tin vào log
return $item_data;
}
// Lưu ảnh vào giỏ hàng sau khi thanh toán
add_action('woocommerce_checkout_create_order_line_item', 'save_order_image_upload_after_payment', 10, 4);
function save_order_image_upload_after_payment($item, $cart_item_key, $values, $order)
{
if (isset($values['order_image_upload'])) {
$item->add_meta_data('order_image_upload', $values['order_image_upload']);
}
}
// Hiển thị ảnh trong đơn hàng ở trang quản trị
add_filter('woocommerce_admin_order_item_values', 'display_order_image_upload_admin', 10, 3);
function display_order_image_upload_admin($values, $item, $item_id)
{
?><h4 style="padding: 10px;">UPLOADED IMAGE:</h4><?php
$order_image_upload = $item->get_meta('order_image_upload');
if (!empty($order_image_upload)) {
?>
<img src="<?php echo $order_image_upload['url']; ?>" width="300" height="300" style="object-fit: contain;padding: 10px;">
<?php
}
}
// Hiển thị ảnh trong đơn hàng ở email
function add_product_image_to_order_email( $output, $order ) {
$items = $order->get_items();
foreach ( $items as $item ) {
// Lấy thông tin ảnh đã tải lên từ meta của mục hàng
$order_image_upload = $item->get_meta('order_image_upload');
if ( ! empty( $order_image_upload ) ) {
// Hiển thị ảnh đã tải lên trong email
$output .= '<p>UPLOADED IMAGE:<p><p><img src="' . $order_image_upload['url'] . '" width="200" height="200" style="object-fit: contain; padding: 10px;"></p>';
}
}
return $output;
}
add_filter( 'woocommerce_email_order_items_table', 'add_product_image_to_order_email', 10, 2 );
Mong rằng bài viết trên sẽ giúp ích cho bạn!