/*
Plugin Name: Pangol Wallet System
Description: سیستم کیف پول حرفهای برای سایت پنگول پت
Version: 1.2
Author: ChatGPT
*/
if ( ! defined( 'ABSPATH' ) ) exit;
// ایجاد جدول هنگام فعالسازی
register_activation_hook(__FILE__, 'pangol_wallet_create_tables');
function pangol_wallet_create_tables() {
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
$wallet = $wpdb->prefix . 'pangol_wallet';
$transactions = $wpdb->prefix . 'pangol_wallet_transactions';
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta("CREATE TABLE $wallet (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
user_id BIGINT UNSIGNED UNIQUE NOT NULL,
balance DECIMAL(10,2) DEFAULT 0,
status VARCHAR(20) DEFAULT 'active',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) $charset_collate;");
dbDelta("CREATE TABLE $transactions (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
user_id BIGINT UNSIGNED NOT NULL,
amount DECIMAL(10,2) NOT NULL,
type VARCHAR(20),
note TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) $charset_collate;");
}
// ساخت کیف پول هنگام ثبتنام
add_action('user_register', function($user_id) {
global $wpdb;
$wpdb->insert($wpdb->prefix . 'pangol_wallet', ['user_id' => $user_id]);
});
// افزودن تب کیف پول به حساب کاربری
add_filter('woocommerce_account_menu_items', function($items) {
$items['wallet'] = 'کیف پول';
return $items;
});
add_action('init', function() {
add_rewrite_endpoint('wallet', EP_ROOT | EP_PAGES);
});
// نمایش کیف پول و تراکنشها
add_action('woocommerce_account_wallet_endpoint', function() {
if (!is_user_logged_in()) return;
global $wpdb;
$user_id = get_current_user_id();
$wallet = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}pangol_wallet WHERE user_id = %d", $user_id));
$transactions = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->prefix}pangol_wallet_transactions WHERE user_id = %d ORDER BY created_at DESC", $user_id));
echo '
';
echo '
💰 موجودی کیف پول: ' . esc_html($wallet->balance) . ' تومان
';
echo '
';
if (isset($_POST['pangol_charge']) && is_numeric($_POST['pangol_amount'])) {
$amount = floatval($_POST['pangol_amount']);
$wpdb->query($wpdb->prepare("UPDATE {$wpdb->prefix}pangol_wallet SET balance = balance + %f WHERE user_id = %d", $amount, $user_id));
$wpdb->insert($wpdb->prefix . 'pangol_wallet_transactions', [
'user_id' => $user_id,
'amount' => $amount,
'type' => 'credit',
'note' => 'شارژ دستی توسط کاربر'
]);
wc_add_notice('کیف پول با موفقیت شارژ شد.');
wp_redirect(wc_get_account_endpoint_url('wallet'));
exit;
}
echo '
تاریخچه تراکنشها
';
if ($transactions) {
echo '
';
echo 'مبلغ | نوع | یادداشت | تاریخ |
';
foreach ($transactions as $tr) {
echo '' . esc_html($tr->amount) . ' | ' . esc_html($tr->type) . ' | ' . esc_html($tr->note) . ' | ' . date('Y-m-d H:i', strtotime($tr->created_at)) . ' |
';
}
echo '
';
} else {
echo '
هیچ تراکنشی ثبت نشده است.
';
}
echo '
';
});
مقایسه - پت شاپ پنگول پت