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

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

Subir