我有一个带有Woocommerce和Woocommerce订阅插件的Wordpress网站。
我需要编写一些PHP脚本来检查用户是否具有有效的订阅状态。
从数据库中,我想获取信息:用户ID,状态(如果它已激活 - 如果付款并且订阅已续订),订阅的结束日期......
问题是我甚至不知道订阅信息的保存位置?
有人可以给我写一个代码片段,其中包含一个查询,它会给我一份订阅的用户列表,以及前面提到的必要信息吗?
我稍后会发布一个包含代码的更新,现在,我只需要查询和指导数据库表中的搜索帮助。
答案 0 :(得分:0)
我认为您的意思是想要从Wordpress安装中的PHP文件访问Wordpress / Woocommerce订阅API。要做到这一点,我认为以下内容将有所帮助:
在wp-content / plugins中创建一个名为woocommerce-subscriptions-status-checker的文件夹
在上面的新文件夹中创建一个名为woocommerce-subscriptions-status-checker.php的文件。
将此代码添加到文件中:
/*
Plugin Name: Woocommerce Subscriptions Status Checker
Plugin URI: http://www.XXXXXX.com
Description: XXXXXXXXX
Author: XXXXXX
Version: 2.0
Author URI: http://www.XXXXX.com
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
class WC_Subscriptions_Status_Checker {
function __construct() {
// Avoids the function firing if we are in wp-admin backend
if ( !is_admin() ) {
// Fires on every page load after WordPress, all plugins, and the theme are fully loaded and instantiated
add_action( 'wp-loaded', array( $this, 'check_current_user' ) );
}
}
function check_current_user() {
// Check if user is even logged in, if not exit
if ( !is_user_logged_in() ) return;
$current_user = wp_get_current_user(); // get current WP_User
$user_id = $current_user->ID; // get user id
$is_subscription = wcs_user_has_subscription( $user_id ); // check if user has subscription
if ( $is_subscription )
{
$subscriptions = wcs_get_users_subscriptions( $user_id ); // get array of all subscriptions
// Check if there is one subscription or multiple subscriptions per user
if ( count( $subscriptions ) > 1 ) {
// Example if you wanted to loop through all subscriptions, in the case of the user having multiple subscriptions
foreach ( $subscriptions as $sub_id => $subscription ) {
if ( $subscription->get_status() == 'active' ) {
// Do something
}
}
} else { // Only 1 subscription
$subscription = reset( $subscriptions ); // gets first and only value
if ( $subscription->get_status() == 'active' ) {
// Do something
}
}
}
}
}
new WC_Subscriptions_Status_Checker();
访问wp-admin的插件部分并激活您的新插件。
答案 1 :(得分:0)
您可以尝试使用Woocommerce REST API。
https://docs.woocommerce.com/document/woocommerce-rest-api/
基本上,Woocommerce提供了一个安静的API来访问数据并与传统的woocommerce工作流程之外的电子商务系统进行交互。
答案 2 :(得分:0)
这是我的解决方案(不是说它是最好的,但对我来说,它解决了我遇到的问题)。
function.php中的代码(WP子主题)
add_action('init','getWPuser');
function getWPuser(){
$current_user = wp_get_current_user();
return $current_user;
}
自定义网站
我的自定义网站中需要有关用户信息的代码。
require_once '../wp-load.php';
require_once '../wp-content/themes/h-code-child/functions.php';
require_once '../wp-includes/pluggable.php';
require_once '../wp-blog-header.php';
$current_user = getWPuser();
保存用户ID信息。
$logged_user_id = $current_user->ID;
检查特定订阅是否为活动。
$has_free = wcs_user_has_subscription( $logged_user_id, $product_id, 'active' );