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:
- Clase get_cart() (inglés)- WooCommerce Code reference
Deja una respuesta