הרשמה מתוך תגובות

הרשמה לעדכונים מתוך תגובות בבלוג וורדפרס

מי שמשתמש בשירותים של וורדפרס.קום כדי לאכסן את הבלוג שלו, או מי שמבקר שם רק בכדי לקרוא, בוודאי נתקל לאחרונה בתוספת חביבה – בסוף טופס התגובה, מתחת לצ'קבוקס הרשמה לעידכונים על תגובות נוספות לפוסט נוסף צ'קבוקס המאפשר לקבל עידכונים במייל על פוסטים חדשים.

הרשמה לעידכונים על תגובות חדשות אפשר להשיג בהתקנה עצמאית בעזרת תוסף כמו Subscribe To Comments , אבל נכון להיום אין דרך לבצע רישום לעדכונים בבלוג ישירות דרך התגובות.
שני התוספים הנפוצים ביותר להרשמה לעדכונים בבלוג הם post-notification ו Subscribe2 המאפשרים להרשם לעידכונים דרך עמוד יעודי או אפילו וויג'ט בבר הצדדי. הפיתרון הכי טבעי לדעתי היה להתממשק עם לפחות אחד מהתוספים הללו ולאפשר הרשמה בצורה הזו.

אחרי שהורדתי ועיינתי קצת בקוד של פוסט-נוטויפיקישנז קיבלתי חום, התוסף בנוי מעשרות קבצי PHP, כל אחד לאזור אחר באתר, הוא לא משתמש בפונקציות אחידות ובקיצור – מבחינת תחזוקת קוד או התממשקות לקוד הוא פשוט נוראי. חיפשתי בכל מאודי פונקציה כמו addNewReader שתקבל כתובת דוא"ל בתור פרמטר, תעביר אותו וואלידציה, תבדוק אם הוא לא קיים במסד הנתונים ואם כן תוסיף אותו – לצערי אין ולכן התוסף הזה לא מתאים (לצרכי לפחות)
התוסף השני (סבסקרייב2) בנוי הרבה יותר טוב לעומת זאת, ראשית – כל הקוד מרוכז בתוך קובץ אחד, שנית, מי שפיתח אותו בנה אותו כאובייקט (class) ולא כאסופת פונקציות. כלומר, במקום לפתח פונקציה שתתקשר עם האובייקט, כל שעלינו לעשות הוא לטעון אותו אל הזיכרון ולפנות לפונצקיית הוספת המשתמשים שלו.
בשלב הראשון, נבנה את קוד ה HTML שמוסיף את השורה בסוף הטוקבקים ונקשור אותו לאירוע טופס תגובות.

add_action('comment_form', 'show_registration_checkbox');
function show_registration_checkbox(){?>
	
< ?}

כל מה שהקוד הזה עושה למעשה הוא להוסיף בתחתית טופס התגובות את הצ'קבוקס הנכסף. שימו לב לעדכן את yourthemetextdomain עם השם המתאים לתרגום של הערכה שלכם, אחרת הטקסט לא יתורגם.
השלב הבא, יהיה להאזין לאירוע של שליחת תגובה בעזרת קישור לאירוע comment_post

add_action('comment_post', 'toto');
function toto()
{
	global $mysubscribe2;
	if($_POST['register'] == 'register')
		$mysubscribe2->add( $_POST['email']);
}

mysubscribe2 הוא האובייקט שמיוצר על ידי subscribe2, כאמור מדובר באובייקט ולא אסופת פונקציות ולכן אנחנו יכולים להשתמש בפונקציה add של האובייקט. כל מה שעלינו להעביר אליה זה פרמטר ה email והתוסף כבר ידאג לכל תהליך ההרשמה כפי שהוא מוגדר בהגדרות התוסף (אם צריך אישור, מיילים מותאמים אישית וכ')

לדרג את הפוסט
0

Comments

10 תגובות על “הרשמה לעדכונים מתוך תגובות בבלוג וורדפרס”

  1. הסבר יפה מאוד. למרות שאישית אני חושב שזה די מיותר ועדיף רסס רגיל.
    למה שלא תארוז את הקוד בתור תוסף ותעלה אותו לאתר התוספים?

    1. לא כולם משתמשים ב RSS, ואפילו אני שכן, אז הרידר שלי מכיל כרגע יותר מ 1000 פריטים שלא נקראו כי אין לי זמן לקרוא הכל.

      ניסיתי לפנות אל הכותב כדי שישלב בקוד של התוסף בעצמו, עדיין לא קיבלתי תשובה, אני מניח שבאיזשהו שלב כשיהיה לי קצת זמן, אעלה את זה אם המפתח לא ישלב.

  2. אחלה רעיון ניצן וגם המימוש עם השימוש באובייקט.

    אגב, את הצ'קבוקס עצמו בטופס אפשר גם להוסיף ישירות בקובץ של טופס התגובות, לא חייבים להוסיף אותו כ-action

    הערת שוליים: לפעמים כשיש קוד מאוד ארוך דווקא נכון יותר לחלק אותו לכמה קבצים. אבל תכלס עצם החלוקה/אי חלוקה לקבצים לא אומרת כלום בהכרח על איכות הקוד או על שימוש בפיתוח אובייקטאלי ולא פונקציונאלי.

    1. האמת, שהדרך הבאמת נכונה לעשות את זה תהיה כאמור להכניס את זה אל תוך תוסף וכך לבטל את התלות בערכת העיצוב. בכוונה לא הסברתי כיצד לשלב ישירות אל טופס התגובות שכן אני מתחיל לשים לב שמפתחי ערכות כבר לא תמיד כוללים comments.php ולכן comments_template קורא לתבנית הדיפולטית (של 2010).

      באשר לאיכות הקוד של פוסטנוטיפיקישנז – אפשר לכתוב קוד גרוע בקובץ אחד ואפשר לכתוב קוד איכותי על פני הרבה קבצים. במקרה הספציפי הקוד הוא גם גרוע וגם מבולגן. למשל, וזה הכי התמיהה אותי, אין פונקציה אחת שהתפקיד שלה לרשום מייל חדש – אז בארבעה קבצים שונים יש ארבעה קודי ואלידציה שחוזרים על עצמם.

  3. תמונת פרופיל של יאי
    יאי

    שלום ניצן
    האם מדובר על עריכת קובץ comments.php בתיקיית העיצוב
    ואז את הקוד הראשון אני שם בסוף לפני סגירת הטופס
    או שאני יכול לעשות זאת דרך מסך הגדרות התוסף?
    ואת הקוד השני איפה לשים?

    1. לא.
      שני הקודים יושבים בתוך function.php של התוסף. זה החלק היפה בכל הסיפור

  4. תמונת פרופיל של יאי
    יאי

    "שימו לב לעדכן את yourthemetextdomain עם השם המתאים לתרגום של הערכה שלכם"
    מה זה אומר?
    לרשום את הכתובת של הדומיין שלי עד לתיקיית העיצוב?

    1. לא. אם אתה משתמש במחרוזות תרגום של וורדפרס בוודאי שמת לב שטקסטים עטופים באחת משתי הפונקציות __ או _e.
      לפונקציה יש שני פרמטרים – הראשון המחרוזת לתרגום והשני ה text-domain. נניח, ל 2010 יש טקסטדומיין שנקרא twentyten.
      זה אומר למערכת מאיזה קובץ תרגום לשלוף את התרגום הרצוי וזה בד"כ מוגדר אי שם בתחילת קובץ ה finction.php

  5. תמונת פרופיל של יאיר
    יאיר

    לא ראיתי קובץ functions.php לתוסף אתה בטח מתכוון לתבנית

  6. תמונת פרופיל של יאיר
    יאיר

    אחרי שהדבקתי את הקוד הראשון בקובץ functions.php זה השבית את האתר והחזיר שגיאה שמכוונת אל השורה האחרונה בקוד

    הקוד השני לבד יושב בלי בעיה בקובץ functions

    ההדבקה נעשתה בסוף קובץ functions
    האם זה מה שצריך לעשות?

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *