WooCommerce: obtenga información del producto (ID, SKU, $) del objeto $product

Hace tiempo que quería publicar esta guía. Como freelancer de desarrollo de WooCommerce, todos los días repito muchas operaciones que me hacen perder el tiempo… y una de ellas es “ ¿Cómo obtener ____ si tengo la variable/objeto $producto? “.
Por ejemplo, "¿Cómo puedo obtener el SKU del producto "? O "¿Cómo puedo obtener la breve descripción del producto "? O tal vez el nivel de existencias del producto , la clase de envío, la clase de impuestos, el precio, el precio regular, el precio de venta, etc., con suerte, este artículo le ahorrará tiempo.
Por supuesto, no siempre tiene acceso a la variable $producto (me refiero a los ganchos de WooCommerce, por ejemplo), por lo que también debe comprender el escenario de su caso y ver si puede "obtener" ese objeto $producto en otro manera.
Por ejemplo, es posible que conozca el $product_id. En este caso, debe encontrar una manera de "obtener el objeto $producto de $product_id"; encontrará este ejemplo a continuación.
Otros ejemplos pueden ser el pedido o las páginas del carrito. Una vez más, aquí realmente no tiene un $producto disponible, por lo que debe recorrer los artículos del pedido/carro y "obtenerlo". Después de eso, puede calcular y obtener cualquier información que necesite de $product. ¡Disfrutar!
1. Tienes acceso a la variable $producto
Los ganchos (do_action y apply_filters) usan argumentos adicionales que se pasan a la función. Si le permiten usar el objeto "$producto", está en el negocio. Alternativamente, puede declarar el "producto de $ global" dentro de su función.
En ambos casos, a continuación le indicamos cómo obtener toda la información del producto:
// Get Product ID $product ->get_id(); // Get Product General Info $product ->get_type(); $product ->get_name(); $product ->get_slug(); $product ->get_date_created(); $product ->get_date_modified(); $product ->get_status(); $product ->get_featured(); $product ->get_catalog_visibility(); $product ->get_description(); $product ->get_short_description(); $product ->get_sku(); $product ->get_menu_order(); $product ->get_virtual(); get_permalink( $product ->get_id() ); // Get Product Prices $product ->get_price(); $product ->get_regular_price(); $product ->get_sale_price(); $product ->get_date_on_sale_from(); $product ->get_date_on_sale_to(); $product ->get_total_sales(); // Get Product Tax, Shipping & Stock $product ->get_tax_status(); $product ->get_tax_class(); $product ->get_manage_stock(); $product ->get_stock_quantity(); $product ->get_stock_status(); $product ->get_backorders(); $product ->get_sold_individually(); $product ->get_purchase_note(); $product ->get_shipping_class_id(); // Get Product Dimensions $product ->get_weight(); $product ->get_length(); $product ->get_width(); $product ->get_height(); $product ->get_dimensions(); // Get Linked Products $product ->get_upsell_ids(); $product ->get_cross_sell_ids(); $product ->get_parent_id(); // Get Product Variations and Attributes $product ->get_children(); // get variations $product ->get_attributes(); $product ->get_default_attributes(); $product ->get_attribute( 'attributeid' ); //get specific attribute value // Get Product Taxonomies $product ->get_categories(); $product ->get_category_ids(); $product ->get_tag_ids(); // Get Product Downloads $product ->get_downloads(); $product ->get_download_expiry(); $product ->get_downloadable(); $product ->get_download_limit(); // Get Product Images $product ->get_image_id(); $product ->get_image(); $product ->get_gallery_image_ids(); // Get Product Reviews $product ->get_reviews_allowed(); $product ->get_rating_counts(); $product ->get_average_rating(); $product ->get_review_count(); |
2. Tienes acceso a $product_id
Si tiene acceso a la identificación del producto (una vez más, generalmente do_action o apply_filters lo harán posible), primero debe obtener el objeto del producto. Luego, haz exactamente lo mismo que arriba.
// Get $product object from product ID $product = wc_get_product( $product_id ); // Now you have access to (see above)... $product ->get_type(); $product ->get_name(); // etc. // etc. |
3. Tienes acceso al objeto de pedido o ID de pedido
¿Cómo obtener la información del producto dentro de la Orden? En este caso, deberá recorrer todos los artículos presentes en el pedido y luego aplicar las reglas anteriores.
// Get $product object from $order / $order_id $order = wc_get_order( $order_id ); $items = $order ->get_items(); foreach ( $items as $item ) { $product = $item ->get_product(); // Now you have access to (see above)... $product ->get_type(); $product ->get_name(); // etc. // etc. } |
Si desea ampliar sus conocimientos, aquí hay otro artículo sobre cómo obtener información adicional del objeto $order .
4. Tienes acceso al objeto Carrito
¿Cómo obtener la información del producto dentro del carrito? En este caso, una vez más, deberá recorrer todos los artículos presentes en el carrito y luego aplicar las reglas anteriores.
// Get $product object from Cart object $cart = WC()->cart->get_cart(); foreach ( $cart as $cart_item_key => $cart_item ){ $product = $cart_item [ 'data' ]; // Now you have access to (see above)... $product ->get_type(); $product ->get_name(); // etc. // etc. } |
Si desea ampliar su conocimiento de PHP de WooCommerce, aquí hay otro artículo sobre cómo obtener información adicional del objeto $cart .
5. Tienes acceso al objeto $post
En ciertos casos (por ejemplo, el backend) solo puede obtener acceso a $post. Entonces, ¿cómo “calculamos” $producto a partir de $post? Pan comido:
// Get $product object from $post object $product = wc_get_product( $post ); // Now you have access to (see above)... $product ->get_type(); $product ->get_name(); // etc. // etc. |
Deja una respuesta