Case Study: Hacking Metadata API

שתפו:

Share on facebook
Share on google
Share on twitter
Share on linkedin

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

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

אני יכול להעיד על עצמי שהמטרייה שוורדפרס מספקת כל פעם, מפתחת אצלי עצלנות יתר.
על מה אני מדבר ? כמה פעמים הייתה לכם התלבטות אם לממש שמירה של נתונים בטבלת meta או בטבלה נפרדת ? כמה פעמים הנוחות של שמירה לטבלת ה- meta בעזרת Metadata API ניצחה את ההתלבטות ?
מה שאני הולך לכתוב כאן גיליתי די מזמן, אבל בחלטתי לכתוב ולשתף את זה עכשיו.
החלטתי לנסות להשתמש ב- Metadata API לטבלה נפרדת.

איפה מתחילים?

המקום הברור להתחיל הוא במקום שמחזיק את הפונקציות הכי נקראות, Post Meta שמצאות ב- /wp-includes/post.php.
צפייה ב- update_post_meta ובעוד כמה פונקציות ששייכות ל- API:

כל הפונקציות שאנחנו מכירים הם למעשה המעטפת לפונקציות אחרות:

  • get_metadata()
  • add_metadata()
  • update_metadata()
  • delete_metadata()

המקבילה לדוגמה שלנו:

שמתי לב שהפרמטר הראשון עושה את ההבדלים לכל ה- meta שקיימים במערכת: posts,user, term….
אם במקרה אמרתם אז למה לא להעביר פרמטר משלי, אנחנו יכולים להיות חברים טובים 🙂
הבעיה שלנו שבכל תהליך יש קריאה לפונקצייה שמוודה אם הפרמטר שלנו הוא טבלת meta מוגדרת במערכת אבל רק בתור property של המשתנה הגלובאלי לעבודה עם בסיס הנתונים: $wpdb

.
אז מה עושים….? עלו לי שתי רעיונות…..

יצירה של טבלה תואמת לאלו של ה-meta

מבנה הטבלאות עם שינוי לטבלה שלנו נראה ככה:

ליידע את וורדפרס על הטבלה החדשה

שימו לב: שערך $meta_type חייב להיות אותו ערך/מבנה של שם הטבלה.
לדוגמה: אם רשמנו טבלה בשם $wpdb->bookmeta, אז ערך ה- “book” צריך להיות meta type.

מאותה סיבה גם החלפנו את שם העמודה שיתאים לסוג: book_id
הקוד שמבצע את הבדיקה:

שלב הפעולה וסיום

כל מה שנשאר לנו לעשות הוא משהו כזה:

מקווה שנהניתם.

יהודה חסין

יהודה חסין

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

יהודה חסין

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

מאמרים אחרונים

קטגוריות

Post SMTP Mailer / Email Log
Post SMTP Mailer / Email Log