מכירים את זה שלקוח מבקש מכם ליצור איזור למשתמשים רשומים בלבד?
אז יש דרך לעשות את זה עם כמה שורות קוד בלבד מבלי להשתמש בתוספים כמו Membership Pro או Wishlist Membership למינהם.
בחירת העמודים שנרצה לחסום את הגישה אליהם
אז בשביל לחסום את הגישה לסוגי פוסטים חדשים שיצרנו באתר (CPT), נצטרך קודם כל ליצור אותם כמובן, ולאחר מכן לקחת את המזהה הייחודי של סוג הפוסט (ה-slug) ולשמור אותו בצד.
אנחנו יכולים לקחת אותו על ידי כניסה לטאב של הפוסטים בפאנל הניהול של וורדפרס והעתקה שלו מכתובת ה-URL.
בניית עמוד שאליו יופנו משתמשים ללא הרשאה
לאחר שהעתקנו את כתובת ה-SLUG של סוג הפוסטים אותם נרצה להגביל, עלינו לבנות עמוד שאליו יועברו המשתמשים במידה והם מגיעים לתוכן חסום ואין להם הרשאה.
מאחר ולשלוח משתמשים לעמוד 404 זה לא אידאלי, נרצה ליצור עמוד מעוצב שמסביר למשתמש מדוע אין לו גישה לתוכן ומה עליו לעשות על מנת לקבל גישה.
זאת גם ההזדמנות לקדם מכירות באתר במידה ואתם מוכרים קורסים או מוצרי ידע מסוג כזה או אחר.
אז ניגש ל-Pages, נפתח עמוד חדש ונעצב אותו איך שנרצה בעזרת אלמנטור או כל כלי אחר שאיתו אתם עובדים.
אני עיצבתי את העמוד הבא:
עכשיו כשיש לנו לאן להפנות את הגולשים במידה והם נוחתים על תוכן מוגבל, נעתיק את ה-SLUG (כתובת העמוד ללא הכתובת של האתר) של העמוד ונשמור גם בצד.
את כתובת העמוד אנחנו לוקחים מאיזור העריכה של הדף:
הוספת קוד ל-functions.php
הדבר האחרון שנשאר לנו הוא להעתיק את קטע הקוד הבא, להדביק אותו בקובץ ה-functions.php של התבנית שלנו ולהכניס את הפרמטרים שהמתאימים שהכנו מראש.
function dorshiff_restrict_post_types_to_registered_users() {
if (in_array(get_post_type(), ['workshops']) && !is_archive() && !is_user_logged_in()) {
wp_redirect(get_site_url() . '/access-denied/');
exit;
}
}
add_action('template_redirect', 'dorshiff_restrict_post_types_to_registered_users');
Code language: PHP (php)
- איפה שכתוב "workshops" נחליף ב-SLUG של ה-CPT שהעתקנו בשלב הראשון.
- איפה שכתוב "access-denied" נחליף ב-SLUG של העמוד שהעתקנו בשלב השני.
לאחר מכן, אנחנו שומרים את הקובץ ומרעננים CACHE באתר במידה ויש.
עכשיו, נגיד ואתם רוצים לחסום גישה לכל הארכיון (דף הקטגוריה) כך שלא ניתן יהיה לגשת לפוסטים ולעמודי הקטגוריה בכלל, ניתן להשתמש בקוד הבא:
function dorshiff_restrict_post_types_to_registered_users() {
if (in_array(get_post_type(), ['workshops']) && !is_user_logged_in()) {
wp_redirect(get_site_url() . '/access-denied/');
exit;
}
}
add_action('template_redirect', 'dorshiff_restrict_post_types_to_registered_users');
Code language: PHP (php)
גם כאן כמובן, יש להתאים את הפרמטרים לאתר שלכם
- איפה שכתוב "workshops" נחליף ב-SLUG של ה-CPT שהעתקנו בשלב הראשון.
- איפה שכתוב "access-denied" נחליף ב-SLUG של העמוד שהעתקנו בשלב השני.
סיכום ובדיקות
זהו, בשלב הזה אתם יכולים לגשת לאתר שלכם במצב גלישה בסתר ולבדוק שהכל עובד כמו שצריך.
ברגע שתגיעו לעמוד מוגבל, תנותבו מיד לעמוד שאותו יצרתם ולא תהיה לכם אפשרות לצפות בתוכן החסום.
תהנו!
עדכון 27/12/2021
בהמשך לבקשה של חבר מקהילת אלמנטור, יצרתי מדריך נוסף שמראה איך אפשר להגביל גישה לעמודים עם שדות מיוחדים.
איך ליצור איזורים למשתמשים רשומים בלבד מבלי להשתמש בתוספים – חלק 2
2 תגובות
אתה משתמש בבדיקה אם הלקוח נכנס או לא.
לפעמים צריך להשתמש בבדיקות אחרות, אבל באופן כללי המדריך מצוין וכתוב בשפה ברורה.
תודה רבה, שמח לשמוע.
לגבי הבדיקה של לקוח מחובר או לא, מסכים איתך, יש הרבה דברים שאפשר לבדוק, במקרה הזה לקחתי את האם הלקוח מחובר כדוגמא לקוד הזה.