مساء الفل عليكم جميعا، متنسوش تصلوا على النبي ❤
كنت شوفت بوست على فيس بوك لشخص بيسأل عن كود مهمته ان لو الشخص مسجل الدخول على الموقع وقام بزيارة صفحة ما يتم اعادة توجيه لصفحة تانية، أما اذا كان غير مسجل للدخول يدخل للصفحة عادي
الموضوع بسيط جدا وهو عن طريق استخدام action داخل الووردبريس اسمه template_redirect.. الأكشن ده ببساطة هو المسئول عن عمل الريدايركت داخل ووردبريس + طبعا استخدام Built in function اسمها wp_redirect()
علشان تنفذلك اعادة التوجيه نفسه لصفحة محددة واللي في حالتنا هتكون ال /dashboard
، واكيد تقدر تعمل function وتخليها تعمل اعادة التوجيه ده بناءا على الشرط اللي تحبه، وفي حالتنا دي محتاجين شرط (إذا الشخص مسجل للدخول) والجزئية دي بالتحديد موجودة بالفعل في ووردبريس Built in Function اسمها is_user_logged_in()
وهي المسئولة عن انها تشوف الزائر الحالي ده مسجل دخول للموقع فعلا ولا لاء
طيب احنا كده احنا ناقصلنا جزء واحد وهو عند زيارة صفحة محددة وهنا برضه نقدر نستخدم Built in function في ووردبريس اسمها is_page()
والفنكشن دي تحديدا مسئولة انها تبحث عن صفحة معينة يا إما بال slug او بال id، يعني ببساطة تقدر تمررلها براميتر الslug بتاع الصفحة، يعني مثال لو صفحتك الslug بتاعها /login مثلا هيبقى استخدام الفنكشن كده is_page('login')
لاحظ مررنا الslug داخل الفنكشن
وأخيرا مننساش نضيف ال exit الجميلة بتاعتها علشان نخرج من الفنكشن بعد اعادة التوجيه بنجاح وإلا هندخل في loop ملهوش نهاية وهيظهرلنا خطأ too many redirection
ملحوظة أخيرة: لو عايز تخليها في حالة عدم تسجيل الدخول فقط هتستخدم علامة تعجب ! قبل الفنشكن دي !is_user_logged_in()
اتفضلوا الكود وماتنسوش تدعولي ❤
add_action('template_redirect', function () {
if (is_user_logged_in() && is_page('login')) {
wp_redirect(home_url('/dashboard'));
exit;
}
});