
Crear campo de subida de archivos en página de producto de WooCommerce
1. Añadir el campo de subida de archivos
- Accede al archivo
functions.phpde tu tema activo. - Agrega el siguiente código:
add_action('woocommerce_before_add_to_cart_button', 'custom_file_upload_field');
function custom_file_upload_field() {
echo '<div class="custom-file-upload">';
echo '<label for="custom_file">Sube tu archivo:</label>';
echo '<input type="file" id="custom_file" name="custom_file" />';
echo '</div>';
}
2. Validar y guardar el archivo en el pedido
- Agrega el siguiente código en el mismo archivo
functions.php:
add_action('woocommerce_add_cart_item_data', 'save_custom_file_upload', 10, 2);
function save_custom_file_upload($cart_item_data, $product_id) {
if (!empty($_FILES['custom_file']['name'])) {
$uploaded_file = $_FILES['custom_file'];
$upload_overrides = array('test_form' => false);
$movefile = wp_handle_upload($uploaded_file, $upload_overrides);
if ($movefile && !isset($movefile['error'])) {
$cart_item_data['custom_file'] = $movefile['url'];
} else {
// Manejar error de subida
}
}
return $cart_item_data;
}
3. Mostrar el archivo en el pedido
- Agrega el siguiente código en el archivo
functions.php:
add_filter('woocommerce_order_item_display_meta_key', 'custom_file_upload_meta_key', 10, 3);
function custom_file_upload_meta_key($display_key, $meta, $item) {
if ($meta->key === 'custom_file') {
$display_key = 'Archivo Subido';
}
return $display_key;
}
add_filter('woocommerce_order_item_meta_end', 'custom_file_upload_meta_value', 10, 4);
function custom_file_upload_meta_value($item_id, $item, $order, $plain_text) {
$custom_file = $item->get_meta('custom_file');
if ($custom_file) {
echo '<p><a href="' . esc_url($custom_file) . '" target="_blank">Descargar Archivo</a></p>';
}
}
4. Probar la funcionalidad
- Ve a la página de un producto en tu tienda.
- Sube un archivo y añade el producto al carrito.
- Completa la compra y verifica que el archivo se muestra en los detalles del pedido.
Categoría: Plugin WooCommerce