尝试使用wcs_get_subscriptions
函数来检索订阅信息以创建可打印标签。
我让插件在查询字符串中传递以逗号分隔的订单ID列表到脚本中,但是我不确定如何将ID字符串传递到函数中。
$subscriptions = wcs_get_subscriptions(array( 'subscriptions_per_page' => -1,
'subscription_status' => array('active'),
'post_id' => array(123,456,789) ));
foreach($subscriptions as $sub){
echo $sub->get_shipping_city();
}
答案 0 :(得分:0)
简而言之,您无法使用wcs_get_subscriptions
函数:
不幸的是,wcs_get_subscriptions
函数当前不允许order_id
参数使用数组。查看该函数的来源,它仅采用一个数字值(“ 用于创建订阅的shop_order post / WC_Order对象的post ID ”),然后将其用作{在post_parent
调用中返回{1}},返回ID列表;然后,在每个数组上运行wcs_get_subscription来创建返回的最终数组。不允许get_posts包含所有参数,这在一定程度上受到限制。
get_posts
函数的源可在此处找到:
https://github.com/wp-premium/woocommerce-subscriptions/blob/master/wcs-functions.php
做您需要的替代解决方案:
您可以使用get_posts,将wcs_get_subscriptions
使用的其他类似参数与wcs_get_subscriptions
参数进行匹配:
'post_parent__in'(数组)包含要查询的父页面ID的数组 的子页面。
这是一个例子:
post_parent__in
如果您具有订阅ID,而不是订单ID,则也可以使用/**
* Get an array of WooCommerce subscriptions in form of post_id => WC_Subscription.
* Basically returns what wcs_get_subcriptions does, but allows supplying
* additional arguments to get_posts.
* @param array $get_post_args Additional arguments for get_posts function in WordPress
* @return array Subscription details in post_id => WC_Subscription form.
*/
function get_wcs_subscription_posts($get_post_args){
// Find array of post IDs for WooCommerce Subscriptions.
$get_post_args = wp_parse_args( $get_post_args, array(
'post_type' => 'shop_subscription',
'post_status' => array('active'),
'posts_per_page' => -1,
'order' => 'DESC',
'fields' => 'ids',
'orderby' => 'date'
));
$subscription_post_ids = get_posts( $get_post_args );
// Create array of subscriptions in form of post_id => WC_Subscription
$subscriptions = array();
foreach ( $subscription_post_ids as $post_id ) {
$subscriptions[ $post_id ] = wcs_get_subscription( $post_id );
}
return $subscriptions;
}
get_wcs_subscription_posts(array(
'post_parent__in' => array(123, 456, 789)
));
。希望有帮助。