有没有办法从中$product
获取$subscription
?
感谢这篇文章,我知道$subscription
我可以从中得到$order
:
$order = $subscription->order;
这也可能吗?
$product = $subscription->product;
或者:
$product = $order->product;
有没有办法从中$product
获取$subscription
?
感谢这篇文章,我知道$subscription
我可以从中得到$order
:
$order = $subscription->order;
这也可能吗?
$product = $subscription->product;
或者:
$product = $order->product;
从 woocommerce 订阅中获取产品完整代码以及使用示例:
if ( sizeof( $subscription_items = $subscription->get_items() ) > 0 ) {
foreach ( $subscription_items as $item_id => $item ) {
$product = $item->get_product();
//Examples of use
$product->get_id();
$product->get_sku();
$product->get_image('post-thumbnail', ['class' => 'alignleft'], false); // main image
$product_id = wcs_get_canonical_product_id( $item ); // get product id directly from item
}
}
可以从订阅或匹配订单中获取产品,因为订阅对象是WC_Order
类的扩展。
$subscription_products = $subscription->get_items();
$order_products = $subscription->order->get_items();
在您提供订阅服务的大多数情况下,这两者将是等效的,或者$order_products
至少应该包含在$subscription_products
.
一个值得注意的例外是您手动创建订阅时;没有订单将附加到订阅,因此$subscription->order
可能不是有效WC_Order
对象。
是的,如果你有一个“订阅 ID”,你可以得到一个像这样的对象:
$subscription = new WC_Subscription( $the_id );
当您已经拥有 $subscription 对象时:
$related_orders_ids_array = $subscription->get_related_orders();
然后遍历相关订单数组。
foreach ( $related_orders_ids_array as $order_id ) {
$order = new WC_Order( $order_id );
$items = $order->get_items();
然后,如果您遍历订单项目,则可以访问产品信息:
foreach ( $items as $product ) {
var_dump( $product );
}
}