Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 直接访问WooCommerce 2.0订阅_Php_Wordpress_Woocommerce - Fatal编程技术网

Php 直接访问WooCommerce 2.0订阅

Php 直接访问WooCommerce 2.0订阅,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我一直通过以下方式直接从Wordpress安装访问WooCommerce订阅: SELECT * FROM `wp_usermeta` WHERE `meta_key` LIKE '%woocommerce_subscriptions' AND `user_id`=0000 但是在WooCommerce 2.x中,订阅模式已经改变。从文件中: 订阅存储和访问 强烈建议您通过API函数访问订阅及其关联的元数据,如。已计划使用订阅版本2.0更改存储架构。API函数将保持向后兼容

我一直通过以下方式直接从Wordpress安装访问WooCommerce订阅:

SELECT * FROM `wp_usermeta`
    WHERE `meta_key` LIKE '%woocommerce_subscriptions'
    AND   `user_id`=0000
但是在WooCommerce 2.x中,订阅模式已经改变。从文件中:

订阅存储和访问 强烈建议您通过API函数访问订阅及其关联的元数据,如。已计划使用订阅版本2.0更改存储架构。API函数将保持向后兼容性,但如果直接访问数据,您应该期望代码与版本2.0冲突


有人知道如何使用WooCommerce 2.x直接从数据库访问订阅数据吗?

尝试使用
meta\u值,如下所示:

SELECT Count({$wp_prefix}woocommerce_order_itemmeta.meta_value) > 0 AS mVal
FROM   {$wp_prefix}woocommerce_order_itemmeta
       LEFT JOIN {$wp_prefix}woocommerce_order_items
              ON {$wp_prefix}woocommerce_order_itemmeta.order_item_id =
                 {$wp_prefix}woocommerce_order_items.order_item_id
       LEFT JOIN {$wp_prefix}postmeta
              ON {$wp_prefix}postmeta.post_id = {$wp_prefix}woocommerce_order_items.order_id
       LEFT JOIN {$wp_prefix}posts
              ON {$wp_prefix}postmeta.post_id = {$wp_prefix}posts.id
WHERE  ( {$wp_prefix}woocommerce_order_itemmeta.meta_key IN (
                  '_subscription_status-Yikes', '_subscription_end_date',
                  '_subscription_start_date-Yikes',
                  '_subscription_period- Yikes' ) )
       AND post_status != 'wc-pending'
       AND {$wp_prefix}postmeta.meta_value = (SELECT id
                                        FROM   {$wp_prefix}users
                                        WHERE  user_url = 'http://{$subDomain}')
       AND {$wp_prefix}woocommerce_order_itemmeta.meta_value = 0;
其中,
{$wp_prefix}
应该是您的前缀。最后的准则是:

$subscription = mysqli_fetch_array(mysqli_query($conn, "SELECT COUNT({$wp_prefix}woocommerce_order_itemmeta.meta_value) > 0 AS mVal FROM {$wp_prefix}woocommerce_order_itemmeta LEFT JOIN {$wp_prefix}woocommerce_order_items ON {$wp_prefix}woocommerce_order_itemmeta.order_item_id = {$wp_prefix}woocommerce_order_items.order_item_id LEFT JOIN {$wp_prefix}postmeta ON {$wp_prefix}postmeta.post_id = {$wp_prefix}woocommerce_order_items.order_id LEFT JOIN {$wp_prefix}posts ON {$wp_prefix}postmeta.post_id = {$wp_prefix}posts.ID WHERE ({$wp_prefix}woocommerce_order_itemmeta.meta_key IN ('_subscription_status-Yikes', '_subscription_end_date', '_subscription_start_date-Yikes', '_subscription_period- Yikes') ) AND post_status != 'wc-pending' AND {$wp_prefix}postmeta.meta_value = (SELECT ID FROM {$wp_prefix}users WHERE user_url = 'http://{$subDomain}') AND {$wp_prefix}woocommerce_order_itemmeta.meta_value = 0"));
$subscription = $subscription[0];

测试
$subscription
是否为
1
是否为订户。

使用
WC\u Subscriptions\u Manager::get\u Subscriptions()
?它会加载整个WP插件@helgatheviking,这是性能方面最糟糕的噩梦<代码>:(