Php 直接访问WooCommerce 2.0订阅
我一直通过以下方式直接从Wordpress安装访问WooCommerce订阅: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函数将保持向后兼容
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,这是性能方面最糟糕的噩梦<代码>:(