获取所有 WooCommerce 订阅

Hen*_*ela 2 php sql wordpress woocommerce woocommerce-subscriptions

我需要创建一个 WordPress 模板来收集所有 Woocommerce 订阅,但我在文档方面遇到问题。我需要知道要导入哪些文件以及要调用哪个函数。

谢谢你的建议。

Loi*_*tec 7

更新 - 您可以使用多种方式:

  1. wcs_get_subscriptions()接受特定参数的内置函数。在您的情况下,要获取所有订阅,您将使用:

    $subscriptions = wcs_get_subscriptions(['subscriptions_per_page' => -1]);

您将获得一个订阅受保护对象的数组,您可以在每个对象上使用该WC_Data get_data()方法来访问数据:

$subscriptions = wcs_get_subscriptions(['subscriptions_per_page' => -1]);

// Loop through subscriptions protected objects
foreach ( $subscriptions as $subscription ) {
    // Unprotected data in an accessible array
    $data = $subscription->get_data();
 
    print_r( $data ); // Display the subscription raw data array
}
Run Code Online (Sandbox Code Playgroud)

相关:获取 Woocommerce 订阅的订阅产品作者


  1. 您还可以使用SQL 查询来获取所有订阅

SQL 查询可以更轻,并且允许更多过滤。这样您就可以以更有效的方式仅获取所需的数据。

由于订阅是 WordPress 自定义帖子类型,因此您可以首先获取所有订阅 ID。然后在 foreach 循环中您将能够获取该WC_subscription对象。

global $wpdb;

// get all subscriptions IDS
$subscriptions_ids = $wpdb->get_col("
    SELECT ID  FROM {$wpdb->prefix}posts 
    WHERE post_type LIKE 'shop_subscription'
");

// Loop through subscriptions Ids
foreach($subscriptions_ids as $subscription_id){
    // Get an instance of the WC_Subscription object
    $subscription = new WC_Subscription( $subscription_id );

    $data = $subscriptions->get_data();
 
    print_r( $data ); Display the subscription raw data (unprotected accessible array)
}
Run Code Online (Sandbox Code Playgroud)

然后,使用该$subscription对象和$subscription_id您将能够执行您想要的操作,使用WC_Subscription方法来获取所需的数据或在专用函数上使用订阅 ID。


官方开发者文档: