דף הבית » טריקים וטיפים, סקירת תוספים

כל מה שרצית לדעת על פיתוח תוספי וורדפרס, ולא העזת לשאול

13 באוגוסט 2010 | מאת רמי | 10 תגובות | תגיות: ,

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

שלב 1: יצירת קובץ לתוסף

תחילה יש ליצור קובץ שבתוכו ישמרו כל הפקודות של התוסף. הקובץ ישמר בשתי דרכים:

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

אחרי שבחרתם את האפשרות המועדפת עליכם, כל מה שנותר הוא ליצור את הקובץ, אבל היכן יוצרים אותו? את הקובץ יש ליצור בתיקייה wp-content/plugins,במידה והתוסף שלכם הוא קובץ בודד צרו קובץ עם סיומת .php ,ואם אתם צריכים תיקייה לתוסף צרו תיקייה ובתוכה קובץ עם שם זהה לשם התיקייה עם סיומת .php (זהו הקובץ הראשי של התוסף).

שלב 2: כתיבת הגדרות לתוסף

כעת לאחר שיצרנו את קובץ/תיקייה, פתחו אותו בעזרת עורך טקסט ורשמו בראשו, את השורות הבאות:

<?php
/*
Plugin Name: the plugin name
lugin URI: the plugin url
Description: short description
Author: author
Version: 1.0
Author URI: author url
*/

?>

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

שלב 3: מערכת ההוקים

בוורדפרס ממוקמות בכל מיני מקומות קריאות שונות לביצוע פעולות. בעזרת מערכת ההוקים של וורדפרס ניתן להוסיף עוד פעולות לביצוע על ידי שם ההוק של הפונקציה. בעצם ביצירת תוספים מה שעושים זה הוספת הוקים (ופילטרים – שעליהם נלמד בהמשך) כדי להוסיף פעולות למערכת הוורדפרס ולפונקציות שלה. נשאלת השאלה איך אנחנו מוסיפים פעולות? פעולות ניתן להוסיף על ידי הפונקציה add_action, הפונקציה הזאת בעצם מוסיפה פעולה שתתבצע בהוק מסוים לפי השם שלו, התחביר של הפונקציה פשוט:

add_action( $tag, $function_to_add, $priority, $accepted_args );

נראה קצת מסובך? אחרי ההסבר זה יהיה יותר ברור:

  • tag – השם של ההוק, קובע היכן תתבצע הפעולה.
  • function_to_add – השם של הפונקציה שתתבצע באותו ההוק, הפונקציה צריכה להיות כתובה באותו דף של התוסף.
  • priority – החשיבות של הפעולה, במידה ויש מספר פעולות על הוק מסוים, סדר הפעולות יתבצע לפי ערך זה, כאשר ערך קטן יותר ירוץ ראשון. זהו משתנה אופציונלי ואם לא רושמים אותו הערך יהיה 10.
  • accepted_args – מספר הערכים שהפונקציה תקבל, הפונקציה שרצה בהוק שקבעתם מקבלת מספר ערכים שאתם היא עובדת, בעזרת ערך זה ניתן להגדיר כמה ערכים הפונקציה תקבל. גם כן משתנה אופציונלי, אם לא רושמים אותו הערך יהיה 1.

עכשיו אחרי שאתם יודעים בערך איך הולכת הפונקציה, אני אתן לכם דוגמא אמיתית כדי להמחיש יותר את העניין:

function show_comment_id_on_edit($id) {
    echo $id;
}
add_action('edit_comment', 'show_comment_id_on_edit');

בדוגמא הנ"ל השתמשנו בהוק edit_comment שפועל כאשר עורכים תגובה. הפעלנו את הפונקציה show_comment_id_on_edit שקבלה את ה-id של התגובה בתור פרמטר (כל הוק שולח פרמטרים שונים,ההוק הספציפי הזה שולח את הפרמטר id), ולאחר קבלתו הוא מודפס. כמובן שאין לזה שימוש, אבל זוהי רק הדגמה. כעת לאחר שהבנתם את העיקרון של ההוקים,אתם יכולים לקרוא על הוקים נוספים בשני מקורות עיקריים:

  • WordPress Codex – רשימת ההוקים בקודקס הרשמי של וורדפרס.
  • Hooks Database – בסיס נתונים המכיל את כל ההוקים של וורדפרס שממוינים לפי הגרסאות שהם נוספו, על מנת להימנע משגיאות תאימות לגרסאות ישנות.

שלב 3: פילטרים

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

add_filter( $tag, $function_to_add, $priority, $accepted_args );
  • tag – זהו שם הפילטר,שמות נוספים של פילטרים יבואו בהמשך
  • function_to_add – הפונקציה שדרכה יעבור הערך כדי לשנות אותו,הפונקציה הזאת היה בעצם "מסנן".
  • priority – זהו בעצם החשיבות של הפעולה,במידה ורצים מספר פעולות על פילטר מסוים,סדר הפעולות יתבצע לפי הערך של זה,כאשר ערך קטן יותר ירוץ ראשון,המשתנה הזה לא חובה ואם לא רושמים אותו הערך יהיה 10.
  • accepted_args – מספר הערכים שהפונקציה תקבל,הפונקציה שרצה בפילטר שקבעתם מקבלת מספר ערכים(תלוי בפילטר),שאיתם היא עובדת,בעזרת ערך זה ניתן להגדיר כמה ערכים הפונקציה תקבל,זהו ערך לא חובה,ואם לא רושמים אותו הערך יהיה 1.

הנה דוגמא קטנה שתמחק לכם יותר טוב:

function content_filter($content) {
    return $content.' some text after each post';
}
add_filter('the_content','content_filter');

בדוגמא הנ"ל, הפעלנו פילטר על 'the content' שזהו בעצם התוכן של הפוסט, הפונקציה מקבלת כפרמטר את התוכן ומחזירה את התוכן עם טקסט אחרי הפוסט. זוהי פעולה פשוטה ואפשר לעשות הרבה דברים עם הפילטרים למשל שינוי תבנית בבלוג,על ידי הפילטרים template ו-stylesheet. פילטרים נוספים ניתן למצוא בקודקס של וורדפרס.

שלב 4: יצירת דפי ניהול

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

function my_plugin_menu() {
    add_options_page('Page title', 'Page link', 'user level', 'your-unique-identifier', 'function name');
}
add_action('admin_menu', 'my_plugin_menu');

אתם כבר אמורים לדעת מה בערך קורה פה, אבל אני אסביר הכל מההתחלה:

  • פונקציה בשם my_plugin_menu שמופעלת בהוק 'admin_menu'
  • בתוך הפונקציה יש עוד פונקציה, זוהי פונקציה מובנית של וורדפרס שבעזרתה מוסיפים דפים למערכת הניהול

הפונקציה עצמה מקבלת מספר ערכים,הנה הסבר קצר על כל אחד מן הערכים:

  • Page title – כותרת דף הניהול של התוסף
  • Page link – הטקסט שיופיע בתפריט בלינק
  • user level – זוהי דרגת המשתמש שיוכל לצפות בדף,ערך זה מקבל מספר בין 0- ל-10,למידע נוסף קראו פה – לינק.
  • your-unique-identifier – מזהה ייחודי לדף הזה,בד"כ אם יש דף אחד רושמים __FILE__ שזהו בעצם השם של הדף הנוכחי
  • function name – הפונקציה שתפעל בעת כניסה לדף הניהול, בתוך הפונקציה אפשר להשתמש בהכל, וכדי להציג תוכן פשוט מדפיסים את מה שרוצים להציג בתוך הפונקציה

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

  • options – יופיע תחת התפריט הגדרות.
  • management – יופיע תחת תפריט כלים.
  • pages – יופיע תחת תפריט עמודים.
  • posts – יופיע תחת תפריט פוסטים.
  • theme – יופיע תחת תפריט מראה הבלוג.

ישנה אפשרות להוסיף דפי משנה,אך אני לא אלמד עליהם במדריך הזה,אבל אם אתם רוצים לקרוא עליהם,אתם יכולים לעשות זאת בקישור הבא – לינק(יש שם גם הסבר יותר מעמיק על הוספת דפים למערכת הניהול למי שרוצה לקרוא).

שלב 5: שמירת נתונים

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

  • הרצת שאילתות SQL על המסד כדי לעשות את זה(דיי מסורבל)
  • להשתמש בפונקציות שוורדפרס מקצה לנו,ולשמור את המידע שאנחנו צריכים על גבי הטבלה options במסד

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

get_option('option name');

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

add_option($name, $value = '', $deprecated = '', $autoload = 'yes');

פונקציה טיפה יותר מסובכת,נסביר ערך ערך מה זה:

  • name – שם ,בעזרת השם הזה נוכל לשלוף את הערך בעתיד ולערוך אותו
  • value – ערך של האפשרות הזו,לא חובה לרשום ואפשר להשאיר ריק
  • deprecated – זהו ערך שלא בשימוש שהוצא מהשימוש בוורדפרס,יש להשאיר ריק
  • autoload – ישנה פונקציה בשם wp_load_alloptions שטוענת את כל האפשרויות למטמון,בערך זה אפשר לקבוע האם זה יטען אוטומטית או לא.

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

update_option( $option_name, $newvalue );

שוב,פונקציה מאוד פשוטה,שם שנרצה לערוך,וערך חדש שניתן לו,ויש לציין ובמידה ולא קיים ערך כזה אז הוא יצור אותו אוטמטית,כך שאם אתם לא רוצים להשתמש באפשרות autoload בפונקציה add_option אתם יכולים ישר להשתמש בפונקציה של העידכון עכשיו החלק האחרון,מחיקה של ערכים:

delete_option($name);

פונקציה פשוטה מאוד,פשוט מקבלת שם ומוחקת אותו.

שלב 6: פונקציות מובנות

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

שלב 7: טיפים

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

שלב 8: סיום

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

מאת רמי

אחראי על אתר וורדפרס בעברית ועל תרגום ושחרור גרסאות וורדפרס בעברית. מפתח ליבה, בכל גרסה החל מגרסה 2.8, מפתח מוביל בגרסה 4.4 ובגרסה 4.6. מספק שירותי פיתוח אתרים, פיתוח תוספי וורדפרס לסטרטאפים ופיתוח כלים למפתחי וורדפרס - GenerateWP.com.

10 תגובות »

  • חזקי כותב :

    חיכיתי המון זמן לפוסט כזה.

    כל הכבוד.

  • צחי כותב :

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

  • דניאל שטרנליכט כותב :

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

  • באינטרנט בניית אתרים כותב :

    אלחה פוסט,
    יופי של מידע וצורת כתיבה מעולה וברורה.
    איפה הקישור לRSS של האתר שנוכל להמשיך ולעקוב?

  • ארז שלום כותב :

    "באינטרנט", אני כתבתי את המאמר הזה ונכון לעכשיו אני לא חושב שיהיה המשך למאמר.

  • זיו לפיד כותב :

    פוסט מעניין מאוד ותודה על המידע

  • ראובן קרסיק כותב :

    כל הכבוד ותודה רבה!

  • אלעד כותב :

    שחכתם לציין שאפשר גם לעשות add_Menu_page בשביל שזה יופיע לא תחת שום קטגוריה.

  • דב כותב :

    פיתחנו תוסף לוורדפרס, איך מעלים אותו לחנות של וורדפרס ?

  • רמי כותב :

    היי דב,

    ניתן להעלות תוספים חדשים באמצעות:
    https://wordpress.org/plugins/add/

    או באמצעות עמוד המראה בעברית:
    https://he.wordpress.org/plugins/add/

    בהצלחה!

הוסף תגובה !

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

תגיות HTML מורשות לשימוש:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>