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

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

הרשמה לעידכונים על תגובות חדשות אפשר להשיג בהתקנה עצמאית בעזרת תוסף כמו 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 והתוסף כבר ידאג לכל תהליך ההרשמה כפי שהוא מוגדר בהגדרות התוסף (אם צריך אישור, מיילים מותאמים אישית וכ')