Obtener metadatos de los productos en el carrito de WooCommerce

Obtener metadatos de los productos en el carrito de WooCommerce

En ocasiones me encargan proyectos en los que tengo que programar nuevas funciones en tiendas online desarrolladas con WooCommerce. Para este tipo de trabajos es bastante habitual manipular metadatos, sin embargo cuando el ecommerce tiene ya un cierto nivel de personalización a través de plugins o temas a medida, conocer estos metadatos examinando el código a través de los archivos es una tarea muy tediosa.

Para este artículo vamos a ver concretamente cómo obtener los metadatos de los productos que se han añadido al carrito. Esto es bastante útil cuando no tenemos claro qué información es la que está disponible cuando el usuario empieza a llenar la cesta, de modo que queremos revisarla para conocer su estructura y acceder después a ella desde nuestro script.

Voy a crear una función llamada mostrar_metadatos_carrito(), que incluiré en el head mediante el hook wp_head. En su interior comprobaré primero si estamos en el carrito o el el checkout, después si WooCommerce está activado y por último valiéndome de la clase get_cart() utilizaré un bucle que imprima el array que contiene los metadatos de cada producto.

// Consultar información de los productos añadidos al carrito
add_action( 'wp_head', 'mostrar_metadatos_carrito' );
function mostrar_metadatos_carrito() {
    if ( is_cart() || is_checkout() ) {
        if ( class_exists( 'woocommerce' ) ) {
            global $woocommerce;

            $cart = $woocommerce->cart;
            $cart_items = $cart->get_cart();
    
            foreach ( $cart_items as $cart_item_key => $cart_item ) {
   
                // Metadatos del producto en el carrito
                echo 'Metadatos: <br>';
                echo '<pre>';
                print_r( $cart_item );
                echo '</pre>';
                echo '<hr>';
            }

        } else {
            echo 'WooCommerce no está activo.';
        }
    }
}

En el ejemplo anterior he usado un print_r para mostrar el array con los datos directamente en pantalla y le he dado un poco de formato con <pre> para que resulte más sencilla la lectura, pero suponiendo que estés trabajando en un entorno ya en producción podrías usar error_log en su lugar y consultar después los registros de errores del servidor.

error_log( $cart_item );

Si no tienes acceso al servidor, debes saber que WordPress permite activar su propio sistema de logs. Dale un vistazo al artículo si quieres saber cómo activarlo.


Referencias:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *