راهنمای کار با افزونه
مستندات قلابها
اکشن بعد از ثبت تراکنش
شروع کار با قلاب ها
فیلتر تغییر درصد پورسانت
فیلتر تغییر مبلغ نهایی پورسانت
اکشن قبل از ثبت درخواست وجه
اکشن بعد از تغییر وضعیت درخواست
فرم اطلاعات مهمان در چت بات
علاقه مندی ها
دیدگاه های پیشرفته
اکشنهای داشبورد همکاری
تاریخچه آپدیت ها
ماژول هوش مصنوعی
اکشن قبل از ثبت درخواست وجه
- نام: hmyt_before_submit_settlement
- این اکشن درست قبل از ثبت درخواست تسویه حساب توسط کاربر اجرا میشود و به شما اجازه میدهد تا قوانین اعتبارسنجی سفارشی خود را اضافه کنید.
پارامترها:
/**
* اکشن قبل از ثبت درخواست تسویه حساب.
* میتوان برای اعتبارسنجی سفارشی از wp_send_json_error استفاده کرد.
*
* @param int $user_id شناسه کاربر درخواستدهنده.
* @param float $amount مبلغ درخواستی.
* @param string $transfer_type نوع انتقال ('bank' یا 'wallet').
*/
مثال۱: اجازه درخواست فقط برای کاربران با نقش کاربری خاص
با استفاده از این قلاب فقط نقش های کاربری مشخص شده اجازه ثبت درخواست تسویه دارند
add_action('hmyt_before_submit_settlement', function($user_id, $amount, $transfer_type) {
$user = get_userdata($user_id);
// نقشهای کاربری مجاز
$allowed_roles = ['editor', 'administrator', 'vip_marketer'];
if (!array_intersect($allowed_roles, $user->roles)) {
wp_send_json_error(['message' => 'شما دسترسی لازم برای ثبت درخواست تسویه را ندارید.']);
}
}, 10, 3);
مثال۲: امکان ثبت درخواست تسویه بانکی فقط در روزهای شنبه و دوشنبه
با استفاده از این قلاب، کاربر فقط در روز های مشخص امکان ثبت درخواست تسویه “بانکی” دارد
add_action('hmyt_before_submit_settlement', function($user_id, $amount, $transfer_type) {
if ($transfer_type === 'bank') {
$day_of_week = (int) jhmyt('w', '', '', 'Asia/Tehran', 'en'); // 0=شنبه, 2=دوشنبه
if (!in_array($day_of_week, [0, 2])) {
wp_send_json_error(['message' => 'درخواست تسویه بانکی فقط در روزهای شنبه و دوشنبه امکانپذیر است.']);
}
}
}, 10, 3);
مثال۳: شرط حداقل ۵ فروش موفق برای ثبت درخواست تسویه
با استفاده از این قلاب، کاربر برای ثبت درخواست تسویه میبایست حداقل فروش مشخصی داشته باشد
add_action('hmyt_before_submit_settlement', function($user_id, $amount, $transfer_type) {
$transactions = get_user_meta($user_id, 'hmyt_affiliate_transactions', true);
$total_sales = is_array($transactions) ? count($transactions) : 0;
if ($total_sales < 5) {
wp_send_json_error(['message' => 'برای ثبت درخواست تسویه، به حداقل ۵ فروش موفق نیاز دارید.']);
}
}, 10, 3);
مثال۴: محدودیت ۳۰ روزه برای کاربران جدید جهت ثبت درخواست
با استفاده از این قلاب فقط کاربرانی که ۳۰ روز از عضویتشان میگذرد امکان ثبت درخواست تسویه دارند
add_action('hmyt_before_submit_settlement', function($user_id, $amount, $transfer_type) {
$user_data = get_userdata($user_id);
$registration_ts = strtotime($user_data->user_registered);
$thirty_days_ago_ts = strtotime('-30 days');
if ($registration_ts > $thirty_days_ago_ts) {
wp_send_json_error(['message' => 'پس از گذشت ۳۰ روز از تاریخ عضویت، میتوانید درخواست تسویه ثبت کنید.']);
}
}, 10, 3);
مثال۵: قفل کردن درخواست وجه (فقط بین روزهای ۲۵ تا ۳۰ ماه)
با استفاده از این قلاب، کاربر فقط بین روز های مشخص ماه امکان ثبت درخواست تسویه دارد
add_action('hmyt_before_submit_settlement', function($user_id, $amount, $transfer_type) {
$today_day = (int) jhmyt('j', '', '', 'Asia/Tehran', 'en');
if ($today_day < 25 || $today_day > 30) {
wp_send_json_error(['message' => 'ثبت درخواست تسویه فقط از روز ۲۵ام تا ۳۰ام هر ماه امکانپذیر است.']);
}
}, 10, 3);
مثال۶: محدودیت تعداد درخواست تسویه در ماه
با استفاده از این قلاب میتوانید تعداد درخواست های تسویه کاربر در ماه را محدود کنید
add_action('hmyt_before_submit_settlement', function($user_id, $amount, $transfer_type) {
$start_of_month = date('Y-m-01');
$requests = get_posts([
'post_type' => 'hmyt_setl',
'author' => $user_id,
'posts_per_page' => -1,
'date_query' => [['after' => $start_of_month, 'inclusive' => true]],
]);
if (count($requests) >= 2) {
wp_send_json_error(['message' => 'شما در این ماه به حداکثر تعداد درخواست تسویه (۲ بار) رسیدهاید.']);
}
}, 10, 3);
برای اینکه این محدودیت فقط روی تسویههای بانکی اعمال شود، باید نوع انتقال را در قلاب بررسی کرده و کوئری دیتابیس را نیز بر اساس متادیتای hmyt_transfer_type فیلتر کنیم.
add_action('hmyt_before_submit_settlement', function($user_id, $amount, $transfer_type) {
// این قانون فقط برای درخواستهای بانکی اجرا میشود
if ($transfer_type === 'bank') {
$start_of_month = date('Y-m-01');
$requests = get_posts([
'post_type' => 'hmyt_setl',
'author' => $user_id,
'posts_per_page' => -1,
'date_query' => [
['after' => $start_of_month, 'inclusive' => true],
],
// این متا کوئری اضافه شده تا فقط درخواستهای بانکی شمارش شوند
'meta_query' => [
[
'key' => 'hmyt_transfer_type',
'value' => 'bank',
'compare' => '=',
],
],
]);
if (count($requests) >= 2) {
wp_send_json_error(['message' => 'شما در این ماه به حداکثر تعداد درخواست تسویه بانکی (۲ بار) رسیدهاید.']);
}
}
}, 10, 3);
مثال۷: جلوگیری از ثبت درخواست در روزهای تعطیل (پنجشنبه و جمعه)
add_action('hmyt_before_submit_settlement', function($user_id, $amount, $transfer_type) {
$day_of_week = (int) jhmyt('w', '', '', 'Asia/Tehran', 'en'); // 4=پنجشنبه, 5=جمعه
if (in_array($day_of_week, [4, 5])) {
wp_send_json_error(['message' => 'امکان ثبت درخواست در روزهای تعطیل وجود ندارد. لطفاً در روزهای کاری (شنبه تا چهارشنبه) اقدام نمایید.']);
}
}, 10, 3);