get_results($wpdb->prepare( "SELECT s.*, p.post_title as product_name FROM {$wpdb->prefix}yoone_subscriptions s LEFT JOIN {$wpdb->posts} p ON s.product_id = p.ID WHERE s.user_id = %d ORDER BY s.created_at DESC", $user_id )); ?>

#id; ?>
product_name ?: __('未知产品', 'yoone-subscriptions')); ?>
status); ?> next_payment_date && $subscription->status === 'active'): ?> subscription_price); ?> / billing_period, $subscription->billing_interval); ?> status === 'active'): ?> status === 'paused'): ?> status, array('active', 'paused'))): ?>
get_row($wpdb->prepare( "SELECT * FROM {$wpdb->prefix}yoone_subscriptions WHERE id = %d AND user_id = %d", $subscription_id, $user_id )); if ($subscription) { switch ($action) { case 'pause': if (wp_verify_nonce($_GET['_wpnonce'], 'pause_subscription_' . $subscription_id)) { $wpdb->update( $wpdb->prefix . 'yoone_subscriptions', array('status' => 'paused', 'updated_at' => current_time('mysql')), array('id' => $subscription_id) ); wc_add_notice(__('订阅已暂停', 'yoone-subscriptions'), 'success'); } break; case 'resume': if (wp_verify_nonce($_GET['_wpnonce'], 'resume_subscription_' . $subscription_id)) { $wpdb->update( $wpdb->prefix . 'yoone_subscriptions', array('status' => 'active', 'updated_at' => current_time('mysql')), array('id' => $subscription_id) ); wc_add_notice(__('订阅已恢复', 'yoone-subscriptions'), 'success'); } break; case 'cancel': if (wp_verify_nonce($_GET['_wpnonce'], 'cancel_subscription_' . $subscription_id)) { $wpdb->update( $wpdb->prefix . 'yoone_subscriptions', array('status' => 'cancelled', 'end_date' => current_time('mysql'), 'updated_at' => current_time('mysql')), array('id' => $subscription_id) ); wc_add_notice(__('订阅已取消', 'yoone-subscriptions'), 'success'); } break; } // 重定向以避免重复提交 wp_redirect(wc_get_account_endpoint_url('yoone-subscriptions')); exit; } } ?>