מערכת ההוקים של וורדפרס
מערכת ההוקים של וורדפס גורמת ליצירת מין סוג של אירועים מסויימים בקוד, ישנם הוקים מובנים שאפשר להשתמש בהם
רשימת ההוקים המובנים בקודקס של וורדפרס
וכמו כן ניתן ליצור הוקים מותאמים אישית.
די קשה להבין את מערכת ההוקים אני אנסה להסביר אותה טוב.
כדי להבין את מערכת ההוקים קודם נלמד לייצר הוקים .
איך יוצרים הוק ?
שמים את הקוד הזה במקום כלשהו בדף
do_action( string $tag, $arg = '' )
דוגמא: יצרנו הוק
do_action( 'hok_example', $blame );
כאשר אנחנו יוצרים הוק משמעותו שאנחנו יכולים "להאזין" מתי ההוק מתבצע ואז להפעיל פונקציה או חבילה כולשהי, שתופעל כביכול במיקום בקוד ששם נמצא ההוק, למרות שנרשום אותה במקום אחר. הפונקציה תופעל כאשר אנחנו נגלוש לדף ששם רשום ההוק.
את ההוק אנחנו משתילים במקום כלשהו בקוד ששם אנחנו רוצים שיתבצע משהו, למשל אם אנחנו רוצים שבכותרת נוכל להדפיס מחרוזת ניצור שם הוק, וכשהוא פועל נוכל להדפיס שם משהו או להריץ קטע קוד כאשר הכותרת נטענת.
את ההרצה של הקוד אנחנו נעשה עם פונקציה שנקראת add_action שעליה נסביר בהמשך.
הוקים יכולים גם להחזיר גם פרמטרים מסויימים, כמו ID וכו..
למשל יש הוק שמתבצעים בכניסה לאדמין ואנחנו רוצים שכאשר יש כניסה לאדמין אז נוסיף תפריט כולשהו, לכן נפעיל הוק שיחכה לכניסה לאדמין, וברגע שזה יקרה נקרא לפונקציה שתפעיל את add_menu_page
באתר יש מדריך לאיך לעשות את זה הוספת תפריטים בלוח הבקרה
אז איך מפעילים הוק?
הפונקציה add_action, היא פונקציה שמוסיפה פעולה שתתבצע בהוק שיצרתם ( או הוק קיים) לפי השם שהגדרתם להוק
add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1);
tag – השם שאנחנו נותנים להוק, כלומר איזה הוק אנחנו בוחרים.
function_to_add – הפונקציה שאנחנו רוצים לבצע במידה ויש את ההוק המסויים הזה את הפונקציה רושמים ליד הקריאה.
priority – עדיפות הפעולה, אם יש כמה קריאות לאותו הוק אז איזה קריאה תהיהה לה עדיפות עליונה יותר, ערך קטן משמעותו שיש יותר עדיפות, הדיפולט של משתנה זה הוא 10.
accepted_args – מספר הערכים שהפונקציה מקבלת, דיפולט 1.
דוגמא :
ניצור הוק שמדפיס את שם המשתמש
נוסיף את יצירת ההוק להאדר header.php
do_action('my_hook');
נקרא להוק למשל מ functions.php
add_action('my_hook', 'user_message');
נכתוב את הפונקציה שאליה הוא קורא כאשר מתרחש ההוק מתחתיו.
function user_message() {
global $current_user;
if (!empty($current_user)) {
$user_login = addslashes($current_user->user_login);
echo "Hello {$user_login}!";
}
}
לסיכום הסבר פשוט על ההוקים:
יצירה של "חבילת פונקציה להרצה" ומיקומה בדף:
do_action("my_hook");
הוספת פונקציה לחבילה מסוימת:
add_action("my_hook","print_somthing");
function print_somthing() {
echo "test hook printing";
}