قلب وردپرس | آموزش جامع
رفتن به کانال در Telegram
مرجع تخصصی آموزش وردپرس گروه تخصصی : @woordpressi اینستاگرام : codin.uni ارتباط : t.me/wpheart?direct
نمایش بیشترکشور مشخص نشده استدسته بندی مشخص نشده است
1 890
مشترکین
اطلاعاتی وجود ندارد24 ساعت
اطلاعاتی وجود ندارد7 روز
اطلاعاتی وجود ندارد30 روز
در حال بارگیری داده...
کانالهای مشابه
ابر برچسبها
هیچ دادهای
مشکلی وجود دارد؟ لطفاً صفحه را تازه کنید یا با مدیر پشتیبانی ما تماس بگیرید.
اشارات ورودی و خروجی
---
---
---
---
---
---
جذب مشترکین
اکتبر '26اکتبر '26
اکتبر '260
در 0 کانالها
سپتامبر '260
در 0 کانالها
Get PRO
اوت '260
در 0 کانالها
Get PRO
ژوئیه '260
در 0 کانالها
Get PRO
ژوئن '260
در 0 کانالها
Get PRO
مه '260
در 0 کانالها
Get PRO
آوریل '260
در 0 کانالها
Get PRO
مارس '260
در 0 کانالها
Get PRO
فوریه '260
در 0 کانالها
Get PRO
ژانویه '260
در 0 کانالها
Get PRO
دسامبر '250
در 0 کانالها
Get PRO
نوامبر '250
در 0 کانالها
Get PRO
اکتبر '250
در 0 کانالها
Get PRO
سپتامبر '250
در 0 کانالها
Get PRO
اوت '250
در 0 کانالها
Get PRO
ژوئیه '250
در 0 کانالها
Get PRO
ژوئن '250
در 0 کانالها
Get PRO
مه '250
در 0 کانالها
Get PRO
آوریل '250
در 0 کانالها
Get PRO
مارس '250
در 0 کانالها
Get PRO
فوریه '250
در 0 کانالها
Get PRO
ژانویه '250
در 0 کانالها
Get PRO
دسامبر '24
+9
در 0 کانالها
Get PRO
نوامبر '24
+9
در 0 کانالها
Get PRO
اکتبر '24
+7
در 0 کانالها
Get PRO
سپتامبر '24
+39
در 0 کانالها
Get PRO
اوت '24
+66
در 0 کانالها
Get PRO
ژوئیه '24
+38
در 0 کانالها
Get PRO
ژوئن '24
+44
در 0 کانالها
Get PRO
مه '24
+38
در 0 کانالها
Get PRO
آوریل '24
+53
در 0 کانالها
Get PRO
مارس '24
+57
در 0 کانالها
Get PRO
فوریه '24
+58
در 0 کانالها
Get PRO
ژانویه '24
+90
در 0 کانالها
Get PRO
دسامبر '23
+136
در 0 کانالها
Get PRO
نوامبر '230
در 0 کانالها
Get PRO
اکتبر '230
در 0 کانالها
Get PRO
سپتامبر '230
در 0 کانالها
Get PRO
اوت '230
در 0 کانالها
Get PRO
ژوئیه '230
در 0 کانالها
Get PRO
ژوئن '230
در 0 کانالها
Get PRO
مه '230
در 0 کانالها
Get PRO
آوریل '230
در 0 کانالها
Get PRO
مارس '230
در 0 کانالها
Get PRO
فوریه '23
+32
در 0 کانالها
Get PRO
ژانویه '23
+40
در 0 کانالها
Get PRO
دسامبر '22
+36
در 0 کانالها
Get PRO
نوامبر '22
+41
در 0 کانالها
Get PRO
اکتبر '22
+22
در 0 کانالها
Get PRO
سپتامبر '22
+20
در 0 کانالها
Get PRO
اوت '22
+33
در 0 کانالها
Get PRO
ژوئیه '22
+39
در 0 کانالها
Get PRO
ژوئن '22
+36
در 0 کانالها
Get PRO
مه '22
+31
در 0 کانالها
Get PRO
آوریل '22
+15
در 0 کانالها
Get PRO
مارس '22
+23
در 0 کانالها
Get PRO
فوریه '22
+29
در 0 کانالها
Get PRO
ژانویه '22
+55
در 0 کانالها
Get PRO
دسامبر '21
+39
در 0 کانالها
Get PRO
نوامبر '21
+26
در 0 کانالها
Get PRO
اکتبر '21
+32
در 0 کانالها
Get PRO
سپتامبر '21
+62
در 0 کانالها
Get PRO
اوت '21
+77
در 0 کانالها
Get PRO
ژوئیه '21
+77
در 0 کانالها
Get PRO
ژوئن '21
+58
در 0 کانالها
Get PRO
مه '21
+53
در 0 کانالها
Get PRO
آوریل '21
+73
در 0 کانالها
Get PRO
مارس '21
+57
در 0 کانالها
Get PRO
فوریه '21
+80
در 0 کانالها
Get PRO
ژانویه '21
+64
در 0 کانالها
Get PRO
دسامبر '20
+1 954
در 0 کانالها
پستهای کانال
| 2 | دلیورس.mp3 | 78 |
| 3 | ✨ با ۳۰ درصد تخفیف تا ساعت ۱۲ امشب میتونید شریکو رو برای همیشه خریداری کنید و فروش سایتتون رو چندبرابر کنید 😉
❗️ از مهمترین ویژگی های شریکو 👇
✅ امکان خرید مشارکتی محصولات
✅ صفحه پرداخت اختصاصی
✅ مدیریت سفارشات اشتراکی
✅ افزایش قیمت پلکانی
✅ نرخ تبدیل فروش بالای محصولات
✅ اتصال به ربات بله و سامانه های پیامکی
✅ و...
🎉 کد تخفیف : wpheart
همین الان اقدام کن و فروش بیشتر محصولاتت رو تضمین کن 😉
برای مشاهده امکانات و خرید از راستچین :
https://www.rtl-theme.com/shariko-wordpress-plugin/ | 178 |
| 4 | 🔥 محصول گرونه؟ مشتری قدرت خریدش رو نداره؟ فروشنده هم فروش بیشتری میخواد؟
اینجاست که شریکو وارد میشه! 🚀
با «شریکو» میتونی امکان خرید دنگیدنگی محصولات رو به فروشگاه ووکامرسیات اضافه کنی؛ یعنی چند مشتری میتونن در خرید یک محصول با هم شریک بشن و هرکدوم سهم خودشون رو پرداخت کنن. 💳
نتیجه؟
🔹 کاهش فشار قیمت برای مشتری
🔹 افزایش شانس خرید محصولات گرانتر
🔹 جذب مشتریهای بیشتر
🔹 ایجاد یک مدل فروش متفاوت و جذاب
🔹 مدیریت ساده فرآیند خرید مشارکتی
🎙️ توی این ویس، کامل توضیح دادیم که شریکو چطور کار میکنه و چطور میتونه مدل فروش فروشگاهت رو تغییر بده.
اگر فروشگاه ووکامرسی داری و دنبال یک راه جدید برای افزایش فروش و جذب مشتری هستی، این ویس رو از دست نده. 👇
🛒 شریکو | خرید دنگیدنگی برای ووکامرس | 188 |
| 5 | 🚀 شریکو؛ افزونه خرید اشتراکی ووکامرس
فروش محصولات گرانقیمت را به یک خرید قابلدسترس برای چند نفر تبدیل کنید!
با شریکو امکان خرید اشتراکی محصولات را به فروشگاه ووکامرسی خود اضافه کنید؛
کاربران میتوانند در خرید یک محصول با یکدیگر شریک شوند و هرکدام سهم خود را پرداخت کنند.
💰 فروش بیشتر با یک روش متفاوت!
شریکو کمک میکند محصولات گرانقیمت را هم به شکل اشتراکی عرضه کنید و با کاهش مبلغ پرداختی هر کاربر، فرصت فروش و مشارکت بیشتری ایجاد کنید.
🔥 امکانات کلیدی شریکو :
✅ ایجاد خرید اشتراکی برای محصولات
✅ تعیین تعداد اعضای هر خرید
✅ مدیریت و پیگیری وضعیت خریدهای اشتراکی
✅ مدیریت سهم و پرداخت اعضا
✅ اطلاعرسانی وضعیت خرید به کاربران
✅ سیستم دعوت و مشارکت کاربران
✅ ارسال پیامکهای اطلاعرسانی
✅ اتصال به سامانههای پیامکی
✅ اطلاعرسانی از طریق ربات بله
✅ پنل مدیریتی و کنترل کامل فرآیند خرید
✅ نمایش وضعیت و مراحل خرید به کاربران
✅ طراحی شده برای افزایش مشارکت و فروش محصولات
🎯 مناسب برای فروش:
📱 موبایل و لوازم دیجیتال
💻 لپتاپ و کامپیوتر
🎮 کنسول و تجهیزات گیمینگ
🏠 لوازم خانگی
⌚ محصولات گرانقیمت و لوکس
🔰 هر محصولی که خرید کامل آن برای یک مشتری سختتر است.
🔥 فروش بیشتر؛ با شریکو
یک محصول را به یک خرید چندنفره تبدیل کنید، مشارکت کاربران را افزایش دهید و فرصتهای جدیدی برای فروش ایجاد کنید.
🛒 شریکو؛ افزونه خرید اشتراکی ووکامرس
محصول را بفروش، مشتریها را شریک کن!
💲 لینک خرید با تخفیف ۷۰ درصدی از راستچین | 228 |
| 6 | 🚨 بزرگترین سوراخ امنیتی REST API وردپرس!
permission_callback رو حذف کنی، ممکنه API ـت برای همه باز بشه!
فرض کن یه endpoint ساختی برای نمایش اطلاعات سفارش:
register_rest_route(
'myplugin/v1',
'/orders',
array(
'methods' => 'GET',
'callback' => 'my_get_orders',
)
);
کد ظاهراً درسته...
اما یه قسمت مهم نداره:
'permission_callback'
❌ مشکل چیه؟
REST API باید علاوه بر اینکه بگه:
«وقتی این URL صدا زده شد، چه کدی اجرا بشه؟»
بدونه:
«چه کسی اجازه داره این کد رو اجرا کنه؟»
مثلاً:
register_rest_route(
'myplugin/v1',
'/orders',
array(
'methods' => 'GET',
'callback' => 'my_get_orders',
'permission_callback' => function () {
return current_user_can( 'manage_woocommerce' );
},
)
);
حالا فقط کاربری که این Capability رو داره میتونه endpoint رو صدا بزنه.
😈 قسمت خطرناکتر
این کد:
'permission_callback' => function () {
return is_user_logged_in();
}
یعنی:
هر کاربر لاگینشدهای اجازه داره.
نه اینکه ادمین باشه!
یا این:
'permission_callback' => '__return_true'
یعنی:
همه اجازه دارن.
اگر endpoint اطلاعات حساس بده یا عملیات مهمی انجام بده، این میتونه فاجعهساز بشه.
🔥 حتی برای GET هم مجوز مهمه
خیلیها فکر میکنن:
«GET که چیزی رو تغییر نمیده، پس Permission لازم نیست.»
اما ممکنه API اطلاعاتی مثل:
email
phone
address
order details
internal IDs
برگردونه.
پس خواندن اطلاعات هم Authorization میخواد.
👑 قانون طلایی REST API
هر endpoint باید حداقل این سه سؤال رو جواب بده:
1️⃣ Authentication
کاربر کیه؟
2️⃣ Authorization
اجازه انجام این کار رو داره؟
3️⃣ Validation
پارامترهایی که فرستاده معتبر هستن؟
مثلاً:
'permission_callback' => function () {
return current_user_can( 'manage_options' );
}
و بعد داخل callback:
function my_get_orders( WP_REST_Request $request ) {
$order_id = absint(
$request->get_param( 'order_id' )
);
if ( ! $order_id ) {
return new WP_Error(
'invalid_order',
'شناسه سفارش نامعتبر است.',
array( 'status' => 400 )
);
}
// ادامه عملیات...
}
💡 نکته Senior-level
permission_callback فقط یک تزئین برای REST API نیست.
این بخش باید مرز ورود به منطق حساس افزونه باشه.
یعنی قبل از اینکه درخواست حتی به منطق اصلی برسه، مشخص کنی:
این درخواست اجازه عبور داره یا نه؟
💬 و اما سوال :
این endpoint از نظر دسترسی چه وضعیتی داره؟
register_rest_route(
'shop/v1',
'/users',
array(
'methods' => 'GET',
'callback' => 'get_users_data',
'permission_callback' => '__return_true',
)
);
امنترین جواب رو توی کامنت بنویس:
این endpoint رو چطور محدود میکنی؟
@wpheart | 278 |
| 7 | نسخه ۱.۲.۰ دلیورس منتشر شد ✨🎉🎉
در این نسخه تغییرات اساسی جدیدی صورت گرفته که از مهمترین آنها به موارد زیر اشاره میشه :
✅ اتصال به ربات بله برای ارسال اعلانات به منظور کاهش هزینه های پیامک
✅ امکان ارسال پیام همگانی به اعضای ربات بله از پنل افزونه، به همراه متن، عکس، دکمه
✅ امکان جابجایی محل نمایش نقشه در صفحه چک اوت بین فیلد های صفحه تسویه حساب
✅ رفع برخی ایرادات و بهبود عملکرد.
🔰 یک ماه از زمان انتشار دلیورس در راستچین نگذشته که این دومین میجر آپدیت دلیورس است 😊
🔆 همین حالا با کد تخفیف ۳۰ درصدی دلیورس رو از راستچین تهیه کنید
کد تخفیف : wpheart
خرید افزونه از راستچین | 305 |
| 8 | 🔥 فقط current_user_can() کافی نیست!
مجوز هر پست میتونه متفاوت باشه!
فرض کن افزونهای ساختی که کاربر فقط باید بتونه سفارشهای خودش رو ویرایش کنه.
این کد:
if ( current_user_can( 'edit_post', $post_id ) ) {
// اجازه ویرایش
}
از این خیلی حرفهایتره:
if ( current_user_can( 'edit_posts' ) ) {
// اجازه ویرایش
}
چرا؟
چون:
edit_posts
فقط میگه کاربر بهطور کلی قابلیت ویرایش نوشتهها رو داره.
اما:
edit_post
با دادن ID یک پست، بررسی میکنه:
آیا این کاربر اجازه ویرایش همین پست مشخص رو دارد؟
مثلاً:
$post_id = 125;
if ( current_user_can( 'edit_post', $post_id ) ) {
wp_update_post(
array(
'ID' => $post_id,
'title' => 'عنوان جدید',
)
);
}
🤯 حالا یه سناریوی واقعی
فرض کن در افزونهات صفحهای داری که کاربر میتونه سفارش شماره 125 رو تغییر بده.
نباید فقط بگی:
current_user_can( 'edit_posts' )
چون ممکنه کاربر اصلاً صاحب سفارش 125 نباشه.
باید مجوز رو روی همون Object بررسی کنی.
👑 نکته خفنتر
وردپرس پشت پرده برای بعضی Capabilityها از مفهوم:
map_meta_cap()
استفاده میکنه.
یعنی یک Capability ظاهراً ساده مثل:
edit_post
میتونه با توجه به:
📌کاربر
📌 ID پست
📌نویسنده پست
📌وضعیت پست
📌 Capabilityهای کاربر
به یک یا چند مجوز واقعی تبدیل بشه.
پس وردپرس فقط نمیپرسه:
«این کاربر Editor هست؟»
بلکه میتونه بپرسه:
«این کاربر برای انجام این عملیات روی همین آبجکت مشخص مجوز داره؟»
🔥 این دقیقاً همون تفاوت بین Role-based permission و Object-level authorization ـه.
⚠️ قانون مهم
هیچوقت برای عملیات حساس فقط به این تکیه نکن:
if ( is_user_logged_in() ) {
// عملیات حساس
}
لاگین بودن ≠یا داشتن مجوز.
و حتی:
current_user_can( 'edit_posts' )
هم همیشه به معنی اجازه دستکاری هر پست دلخواه نیست.
💬 سوال از شما:
اگر کاربر فقط باید بتواند پستهایی که خودش ساخته را ویرایش کند، شما کدوم رو انتخاب میکنی؟
current_user_can( 'edit_posts' )
یا
current_user_can( 'edit_post', $post_id )
یا اصلاً روش دیگهای؟ 👇🔥
جوابتو بهمون بگو 😉
@wpheart | 247 |
| 9 | 🔥 is_admin() اصلاً یعنی کاربر ادمینه؟!
یکی از اشتباهات جالب توی وردپرس اینه که خیلیها فکر میکنن:
if ( is_admin() ) {
// کاربر ادمین است!
}
❌ کاملاً اشتباهه!
is_admin() اصلاً بررسی نمیکنه کاربر Administrator هست یا نه.
این تابع فقط میگه:
«آیا درخواست فعلی مربوط به محیط مدیریت وردپرسه؟»
مثلاً:
if ( is_admin() ) {
wp_enqueue_script( 'my-script' );
}
یعنی اسکریپت رو در صفحات /wp-admin/ لود کن.
اما اگر هدفت اینه که بفهمی کاربر دسترسی خاصی داره یا نه، باید Capability رو بررسی کنی:
if ( current_user_can( 'manage_options' ) ) {
// کاربر اجازه مدیریت تنظیمات را دارد
}
یا مثلاً:
if ( current_user_can( 'edit_posts' ) ) {
// کاربر اجازه ویرایش نوشتهها را دارد
}
🤯 حالا قسمت خطرناک ماجرا
فرض کن یه AJAX endpoint داری:
add_action( 'wp_ajax_delete_product', 'delete_product' );
function delete_product() {
if ( ! is_admin() ) {
wp_die( 'Access denied' );
}
// حذف محصول...
}
فکر میکنی امنه؟
❌ نه!
چون درخواستهای admin-ajax.php در ساختار مدیریت وردپرس پردازش میشن و is_admin() ممکنه true باشه؛ حتی اینکه کاربر واقعاً مجوز حذف محصول داشته باشه اصلاً بررسی نشده.
روش درست:
function delete_product() {
if ( ! current_user_can( 'delete_products' ) ) {
wp_send_json_error( 'Access denied', 403 );
}
// حذف محصول...
}
و اگر عملیات از سمت کاربر ارسال میشه، Nonce رو هم جداگانه بررسی کن:
check_ajax_referer( 'delete_product' );
if ( ! current_user_can( 'delete_products' ) ) {
wp_send_json_error( 'Access denied', 403 );
}
🧠 پس این سه تا رو قاطی نکن:
is_admin()
محل اجرای درخواست رو مشخص میکنه.
current_user_can()
بررسی میکنه کاربر اجازه انجام کار رو داره یا نه.
Nonce
بررسی میکنه درخواست از جریان مورد انتظار اومده و در برابر CSRF محافظت بشه.
یعنی:
Admin Context ≠، Admin User ≠، Authorization
این یکی از اون تفاوتهاییه که وقتی توی پروژههای واقعی بزرگتر میشی، اهمیتش رو میفهمی. 🔥
حالا با این تفاصیر، به نظرت این کد چه مشکلی داره؟
if ( is_admin() ) {
delete_user();
}
اولین ایرادی که به ذهنت میرسه رو کامنت کن 👇
@wpheart | 249 |
| 10 | #شریکو
محصول جدید ما بزودی در راستچین منتشر میشه 😉
کاربرد این افزونه به این صورت هستش که شما تعیین میکنید که محصول قابلیت خرید مشارکتی ( دنگی دنگی ) داشته باشه و کاربر در زمان خرید محصول میتونه درصدی از مبلغ محصول رو پرداخت کنه و برای باقی مانده هزینه دوستانش رو برای پرداخت دعوت کنه 😁
اینطوری فروشتون چندبرابر میشه چون :
توی خیلی گروه ها دیدم که مثلا برای خرید یک دوره دنبال فردی میگردن که شریکی بخرن اما خب بحث اعتماد میاد وسط و خرید کنسل میشه! اما به کمک #شریکو دیگه همچین داستانی نیست چون هر کاربر سهم خودش رو از لینک اختصاصی خودش پرداخت میکنه و با تکمیل مبلغ همه شرکا به محصول دسترسی دارن 😉😉😉
بزودی منتظر انتشار #شریکو باشید ❤️
جای چه افزونه و قالبی رو خالی میبینید توی وردپرس؟
بهمون بگید، ایده از شما پیاده سازی از ما، البته هدیه های محفوظ هم براتون داریم 😘🌹 | 466 |
| 11 | 🚨 میخوای به کاربر یک لینک بدی که بدون لاگین فقط به همون اطلاعات دسترسی داشته باشه؟
مثلاً:
🔹 لینک دانلود فاکتور
🔹 مشاهده وضعیت سفارش
🔹 لینک لغو سفارش
🔹 لینک تأیید ایمیل
🔹 لینک دسترسی موقت به یک فایل
🔹 لینک مشاهده یک صفحه اختصاصی
لازم نیست برای هرکدوم یک سیستم عجیب احراز هویت بسازی!
یکی از الگوهای جالب وردپرس اینه که یک Nonce رو به URL یا درخواستت اضافه کنی و قبل از انجام عملیات اعتبارش رو بررسی کنی.
🎯 مثال واقعی: لینک لغو سفارش
فرض کن سفارش شماره 1520 داریم.
میخوایم مشتری با یک لینک مثل این:
example.com/?cancel_order=1520&_wpnonce=XXXX
بتونه سفارش خودش رو لغو کنه.
لینک رو اینطوری میسازیم:
$url = wp_nonce_url(
add_query_arg(
[
'cancel_order' => $order_id,
],
home_url()
),
'cancel_order_' . $order_id
);
حالا هنگام دریافت درخواست:
if (
! isset( $_GET['_wpnonce'] ) ||
! wp_verify_nonce(
$_GET['_wpnonce'],
'cancel_order_' . $order_id
)
) {
wp_die( 'لینک نامعتبر است.' );
}
اماااا... 😏
⚠️ اینجا یک اشتباه امنیتی خطرناک وجود دارد!
Nonce به معنی مجوز دسترسی نیست.
اگر لینک مربوط به سفارش شخصی باشد، باید علاوه بر Nonce بررسی کنیم که کاربر واقعاً مالک سفارش است:
if ( $order->get_user_id() !== get_current_user_id() ) {
wp_die( 'دسترسی غیرمجاز.' );
}
یعنی:
Nonce → درخواست معتبر است؟
Authorization → این شخص اجازه انجام این کار را دارد؟
این دو تا یکی نیستند.
🔥 مثال دوم: لینک دانلود خصوصی
فرض کن افزونهای ساختهای که بعد از خرید، به مشتری لینک دانلود میدهد.
بهجای اینکه فایل را مستقیم منتشر کنی:
/wp-content/uploads/file.zip
یک Endpoint میسازی:
/download-file/?order=1520&file=123&_wpnonce=XXXX
و قبل از ارسال فایل بررسی میکنی:
wp_verify_nonce(
$_GET['_wpnonce'],
'download_file_123'
);
بعد بررسی میکنی:
آیا این سفارش متعلق به کاربر است؟
آیا سفارش پرداخت شده؟
آیا فایل متعلق به همین محصول است؟
آیا لینک هنوز معتبر است؟
و فقط در صورت تأیید، فایل را تحویل میدهی.
💡 این الگو در سیستمهای دانلود، فاکتور، قرارداد و فایلهای خصوصی فوقالعاده کاربردی است.
🤯 مثال سوم: لینک تأیید بدون لاگین
مثلاً کاربر فرم ثبتنام پر کرده و ایمیل تأیید برایش ارسال میکنی:
example.com/verify/?user=152&_wpnonce=XXXX
کاربر روی لینک میزند.
لازم نیست اول Login کند.
تو Nonce را بررسی میکنی، شناسه کاربر را بررسی میکنی و در صورت معتبر بودن:
update_user_meta(
$user_id,
'email_verified',
true
);
و ایمیل تأیید میشود.
🚨 اما این قسمت خیلی مهمه!
Nonce وردپرس:
❌ رمز عبور نیست
❌ Token دائمی نیست
❌ جای Authorization نیست
❌ برای ذخیره اطلاعات محرمانه داخل URL مناسب نیست
و نکته جالبتر:
Nonceهای وردپرس واقعاً یکبارمصرف نیستند.
آنها برای یک بازه زمانی معتبرند.
پس اگر میخواهی یک لینک واقعاً:
«فقط یک بار قابل استفاده باشد»
باید خودت یک Token تصادفی تولید کنی، در دیتابیس ذخیره کنی و بعد از اولین استفاده آن را باطل کنی.
مثلاً:
$token = wp_generate_password(
32,
false
);
ذخیره:
update_user_meta(
$user_id,
'download_token',
$token
);
و بعد از استفاده:
delete_user_meta(
$user_id,
'download_token'
);
🔥 این یعنی واقعاً One-Time Token ساختهای.
💎 جمعبندی
اگر فقط میخواهی درخواست از مسیر مورد انتظار سایت آمده باشد:
Nonce
اگر میخواهی بفهمی کاربر اجازه انجام عملیات را دارد:
Authorization / Capability / Ownership Check
اگر لینک باید واقعاً یکبارمصرف باشد:
Random Token + ذخیره + Invalidate بعد از استفاده
اگر داری API اختصاصی میسازی:
Authentication مناسب API
💬 حالا یک سؤال:
اگر بخوای برای یک سایت وردپرسی لینک بدون لاگین بسازی، کدوم سناریو برات کاربردیتره؟
1️⃣ دانلود فایل
2️⃣ مشاهده سفارش
3️⃣ لغو سفارش
4️⃣ تأیید ایمیل
5️⃣ چیز دیگهای
توی کامنت ها چلنج کنیم؟ 👇
❤️ قلب وردپرس | @wpheart | 254 |
| 12 | همین حالا به سایت راستچین مراجعه کنید و در نوار جستجو « دلیورس » رو پیدا کنید و با استفاده اد کد تخفیف
wpheart
با ۳۰ درصد تخفیف دلیورس رو داشته باشید 😉
امکانات جدید که به نسخه ۱.۱.۰ اضافه شده :
✅ محدودیت شهر فعال
✅ مدیریت نامحدود شعبه و نمایش اطلاعات شعبه بر روی نقشه
✅ محاسبه هزینه پیک و زمان ارسال از نزدیکترین شعبه به مشتری
📌و.... | 409 |
| 13 | اینم کد تخفیف ۳۰ درصدی به مناسبت نسخه جدید 😉
wpheart
صفحه خرید دلیورس | 294 |
| 14 | 🚀🔥 دلیورس 1.1.0 منتشر شد!
نسخه جدید دلیورس با چند تغییر اساسی و مهم آمادهست! 😎
اگر دلیورس رو برای مدیریت ارسال فروشگاهت میخوای، این آپدیت رو از دست نده 👇
🏪 مدیریت نامحدود شعبهها
دیگه محدود به تعداد مشخصی شعبه نیستی!
هر تعداد شعبه که داری اضافه کن و اطلاعات هر شعبه رو مدیریت کن.
🗺️ نمایش شعب روی نقشه
شعبهها رو روی نقشه ببین، موقعیت هر شعبه مشخص باشه و اطلاعات شعبهها رو سریع و راحت در اختیار داشته باش. 📍
🏙️ محدود کردن فعالیت دلیورس به یک شهر
فروشگاهت فقط در یک شهر فعالیت میکنه؟
دلیورس رو فقط برای همون شهر فعال کن تا فرآیند ثبت آدرس و ارسال دقیقتر و کنترلشدهتر انجام بشه. 🎯
⚡ سرعت بیشتر، عملکرد بهتر
در نسخه 1.1.0 روی بهینهسازی درخواستها و عملکرد افزونه کار کردیم تا دلیورس سریعتر، روانتر و بهینهتر اجرا بشه.
━━━━━━━━━━━━━━
🔥 دلیورس فقط یک افزونه ارسال نیست؛
قراره مدیریت ارسال فروشگاه ووکامرسی رو حرفهایتر و سادهتر کنه. 🚚
🎁 و اگر هنوز تهیهش نکردی:
همین الان از راستچین تهیه کن! 🔥
👇 نسخه 1.1.0 رو ببین و دلیورس رو به فروشگاهت اضافه کن.
خرید افزونه از راستچین
#دلیورس #ووکامرس #وردپرس #افزونه_وردپرس #فروشگاه_اینترنتی #ارسال_سفارش #مدیریت_شعب #پیک #ووکامرس_فارسی | 312 |
| 15 | نیم ساعت مونده از تخفیف
جا نمونید 🔥🔥🔥 | 330 |
| 16 | 🚨 میتونی مقدار یک Option وردپرس رو بدون حتی یک Query تغییر بدی!
خیلیها برای تغییر مقدار یک تنظیم میرن سراغ:
update_option(
'my_setting',
'new_value'
);
اما وردپرس یک هوک خیلی خفن داره که میتونه قبل از اینکه get_option() سراغ دیتابیس بره مقدار رو برات برگردونه:
pre_option_{$option}
😳 مثال واقعی
فرض کن این Option رو داری:
get_option( 'my_api_url' );
میتونی بدون دست زدن به دیتابیس کاری کنی همیشه مقدار دلخواهت برگرده:
add_filter(
'pre_option_my_api_url',
function () {
return 'https://api.example.com/v2';
}
);
از این لحظه:
get_option( 'my_api_url' );
همین مقدار رو دریافت میکنه.
🔥 کاربردش کجاست؟
فرض کن یک افزونه قدیمی داری که داخل صدها جای مختلف نوشته:
get_option( 'my_plugin_mode' );
لازم نیست بری همه فایلها رو تغییر بدی.
میتونی مقدار Option رو از بیرون Override کنی:
add_filter(
'pre_option_my_plugin_mode',
function () {
return 'production';
}
);
بدون:
❌ تغییر دیتابیس
❌ تغییر کد افزونه
❌ اجرای update_option()
🤯 حتی جالبتر...
همین تکنیک برای بعضی Optionهای هسته وردپرس هم قابل استفاده است.
مثلاً:
add_filter(
'pre_option_blogname',
function () {
return 'قلب وردپرس ❤️';
}
);
حالا:
get_option( 'blogname' );
مقدار جدید رو برمیگردونه؛ در حالی که مقدار اصلی دیتابیس دست نخورده باقی مونده.
⚠️ ولی حواست باشه!
این تکنیک برای تغییر دائمی تنظیمات نیست.
اگر میخوای مقدار واقعاً در دیتابیس ذخیره بشه:
update_option()
راه درستشه.
pre_option_* بیشتر برای:
🔹 Override موقت
🔹 تست و Debug
🔹 Environmentهای مختلف
🔹 تغییر رفتار افزونه بدون دستکاری سورس
🔹 سیستمهای Multi-site / Multi-environment
استفاده میشه.
💎 نکتهای که خیلیها نمیدونن:
وردپرس فقط یک سیستم ذخیرهسازی نیست؛ خیلی از APIهای هسته قابل Intercept شدن هستن.
یعنی قبل از اینکه وردپرس کاری رو انجام بده، میتونی وارد جریانش بشی و نتیجه رو تغییر بدی.
این یعنی قدرت واقعی Hookهای وردپرس. 🔥
💬 حالا سؤال:
اگر قرار بود بدون تغییر دیتابیس، یکی از Optionهای سایتت رو Override کنی، کدوم Option رو انتخاب میکردی؟
جوابت رو کامنت کن 👇
📌 @wpheart
❤️ قلب وردپرس | 328 |
| 17 | هنوز توی تخفیف ۶۰ درصدی هست دوستان، از فرصت استفاده کنید 😁😁 | 256 |
| 18 | 🚀🔥 دلیورس بالاخره منتشر شد!
اگه یه فروشگاه ووکامرسی داری و هنوز برای محاسبه هزینه ارسال، مدیریت پیک، محدوده سرویسدهی و آدرس مشتریها درگیری، این افزونه دقیقاً برای تو ساخته شده! 😎
معرفی میکنم:
#️⃣ افزونه دلیورس | سیستم حرفهای مدیریت ارسال ووکامرس
با دلیورس میتونی:
📍 محاسبه هوشمند هزینه ارسال بر اساس مسافت
🗺️ انتخاب آدرس مشتری روی نقشه نشان
🏪 مدیریت چند شعبه و مبدا ارسال
🚚 اتصال به سرویسهای پیک و درخواست آنلاین پیک
📦 تعیین محدوده قابل سرویسدهی
⏰ امکان تعیین بازههای زمانی ارسال
📱 ارسال پیامکهای اطلاعرسانی
📋 مدیریت و مشاهده سفارشها و وضعیت ارسال
👤 مدیریت آدرسهای مشتری
📊 امکانات مدیریتی برای کنترل بهتر ارسال سفارشات
یعنی بهجای اینکه سفارشها، آدرسها و ارسالها رو دستی مدیریت کنی،
دلیورس بخش بزرگی از فرآیند ارسال فروشگاهت رو یکجا مدیریت میکنه. 💪
━━━━━━━━━━━━━━
🔥🔥 تخفیف ویژه انتشار!
💥 الان دلیورس با ۷۰٪ تخفیف در راستچین عرضه شده!
اگه قصد داری سیستم ارسال فروشگاهت رو حرفهایتر کنی،
الان بهترین زمان خریدشه.
👇 همین الان ببینش و قبل از تموم شدن تخفیف
تهیهش کن:
🛒 افزونه دلیورس در راستچین | 519 |
| 19 | 🚨میدونی که Nonce وردپرس «رمز یکبارمصرف» نیست!
خیلیها فکر میکنن وقتی اینو مینویسن:
wp_nonce_field( 'delete_product', 'my_nonce' );
دیگه عملیاتش کاملاً امن شده.
❌اما کاملا اشتباه!
Nonce در وردپرس احراز هویت نیست و بهتنهایی مجوز انجام عملیات نمیده.
پس Nonce دقیقاً چیکار میکنه؟
Nonce عمدتاً برای مقابله با CSRF استفاده میشه.
یعنی کمک میکنه بفهمیم:
این درخواست احتمالاً از همان سایت و جریان مورد انتظار ارسال شده؟
اما این به معنی این نیست که:
این کاربر اجازه انجام این عملیات را دارد.
❌ در مثال زیر یک کد ناقص رو میبینیم :
if ( wp_verify_nonce(
$_POST['my_nonce'],
'delete_product'
) ) {
wp_delete_post( $product_id );
}
اینجا فقط Nonce بررسی شده.
اما Capability کاربر بررسی نشده!
✅ روش حرفهای که در مثال زیر یک تکه کد کامل و اصولی رو میبینیم :
if ( ! current_user_can( 'delete_post', $product_id ) ) {
wp_die( 'Access denied' );
}
if ( ! wp_verify_nonce(
$_POST['my_nonce'] ?? '',
'delete_product'
) ) {
wp_die( 'Invalid request' );
}
wp_delete_post( $product_id );
اینجا دو موضوع جدا بررسی میشن:
Nonce → آیا درخواست معتبر/مورد انتظار است؟
Capability → آیا این کاربر اجازه انجام این کار را دارد؟
🤯 و یک نکته خفنتر که باید بدونید !
اسمش Nonce هست، اما در وردپرس الزاماً یکبارمصرف نیست!
Nonceهای وردپرس معمولاً در یک بازه زمانی قابل استفاده مجدد هستند و عمر پیشفرضشان حدود ۱۲ تا ۲۴ ساعت است؛ بنابراین نباید آن را با OTP یا Token یکبارمصرف اشتباه گرفت.
💎 قانون حرفهای وردپرس که توسعه دهنده ها باید بدونن :
Nonce = محافظت در برابر CSRF
Capability = کنترل دسترسی
Authentication = شناسایی کاربر
این سه تا را با هم قاطی نکن. 🔥
بیشتر بدون 👇👇👇
@wpheart | 339 |
| 20 | بدون متن... | 417 |
