Una vez que un cliente realiza un pedido, es posible que desee saber si dicho pedido contiene un producto o identificación de variación determinada. Puede usar esto para fines de seguimiento, para redirigir a una página de agradecimiento personalizada o ejecutar sus funciones personalizadas.
También puede ejecutar el cheque en el administrador o en sus funciones personalizadas, siempre que tenga acceso al ID de pedido o al objeto de pedido.
¡Disfrutar!
Php Snippet: verifique si el pedido contiene ID de producto
Esta función PHP bbloomer_check_order_product_id
Comprueba si una ID de producto específica está presente en un pedido. Aquí hay una explicación detallada de la función y su uso.
wc_get_order( $order_id )
Obtiene el objeto de orden en función de la ID de orden dada. Si no se encuentra ningún pedido, la función volverá null
. Lo que significa, la siguiente línea – if ( ! $order ) return;
– significa que si no se encuentra el pedido, la función sale temprano.
$items = $order->get_items();
Recupera todos los artículos asociados con el pedido. Nosotras a través de cada elemento en el orden y recuperamos su ID de producto respectivo. Si el elemento es una variación, obtiene el ID de variación; De lo contrario, obtiene la identificación de producto estándar.
if ( $this_product_id === $product_id )
Comprueba si la ID del producto del artículo actual coincide con la ID de producto dada (la que desea encontrar dentro del pedido). Si se encuentra una coincidencia, la función regresa true
. Si el bucle se completa sin encontrar una ID de producto coincidente, la función devuelve false
.
/** * @snippet WooCommerce: Check if Product ID is in the Order * @how-to businessbloomer.com/woocommerce-customization * @author Rodolfo Melogli, Business Bloomer * @compatible WooCommerce 9 * @community https://businessbloomer.com/club/ */ function bbloomer_check_order_product_id( $order_id, $product_id ) { $order = wc_get_order( $order_id ); if ( ! $order ) return; $items = $order->get_items(); foreach ( $items as $item_id => $item ) { $this_product_id = $item->get_variation_id() ? $item->get_variation_id() : $item->get_product_id(); if ( $this_product_id === $product_id ) { return true; } } return false; }
Uso: Siempre que tenga una ID de pedido (por ejemplo, 1234) y una ID de producto (por ejemplo, 5678) que desee encontrar dentro del pedido, llamaría la función de la siguiente manera:
$order_id = 1234; $product_id = 5678; if ( bbloomer_check_order_product_id( $order_id, $product_id ) ) { // The product is in the order echo "Product is in the order."; } else { // The product is not in the order echo "Product is not in the order."; }
Puede integrar esta función en varios ganchos y acciones de WooCommerce para automatizar los controles y las acciones personalizadas. Por ejemplo, puede usarlo en el woocommerce_thankyou
acción, que se ejecuta después de que se complete un pedido:
add_action( 'woocommerce_thankyou', function( $order_id ) { $product_id = 5678; // ID of the product you want to check if ( bbloomer_check_order_product_id( $order_id, $product_id ) ) { // Perform custom actions because the product is in the order // For example, send a custom email or apply a special tag to the customer } });