ווקים וורדפרס: מדריך למתחילים להוסיף הוקס משלך

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


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

אבל מה עם לעשות את אותו הדבר עם תוספים? ווים אינם מיועדים לשימוש בוורדפרס בלבד, הם בעצם דפוס עיצובי אותו תוכלו ליישם בעבודה שלכם.

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

למה אנחנו צריכים ווים

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

כל זה נעשה באמצעות ממשק משתמש נחמד, כל שעליך לעשות הוא להשתמש בפונקציות כמו get_field () או the_field () בקצה הקדמי. בינתיים הכל טוב.

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

אם ל- ACF (שדות מותאמים אישית מתקדמים) אין ווים, הדבר יהיה קשה לעשות זאת, ייתכן שתצטרך להשתמש במנגנון מחוץ ל ACF כדי לשמור את השדה הזה. למזלנו, אנו מכוסים על ידי acf / save_post פעולה. ניתן להשתמש בפעולה זו כדי לשנות נתוני $ _POST לפני שהם נשמרים – זמן מושלם להמיר את המחיר לדולר.

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

איך ווים עובדים באופן פנימי

כדי ליצור ווים משלנו, אנו נעשה בדיוק את מה שוורדפרס עושה באופן פנימי – נשתמש בפונקציות do_action () ו- Apply_filters () כדי לבצע את כל הפונקציות המחוברות. בואו נפנה אל קוד המקור של וורדפרס כדי לראות כיצד עובדים אלה.

וורדפרס משתמשת בפונקציה wp_trim_excerpt () באופן פנימי כדי ליצור קטע. ב- WordPress 4.1 פונקציה זו מוגדרת ב- wp-כולל / formatting.php, החל משורה 2542. אם תפנה את תשומת לבך לקו 2560, עליך לראות את הדברים הבאים:

$ excerpt_length = Apply_filters (‘excerpt_length’, 55);

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

add_filter (‘קטע_אורך’, ‘plugin_a_excerpt_modify’, 20);
plugin_a_excerpt_modify (אורך $) {
להחזיר אורך $ – 10;
}

add_filter (‘excerpt_length’, ‘plugin_b_excerpt_modify’, 32);
plugin_b_excerpt_modify (אורך $) {
תשואה 104;
}

add_filter (‘excerpt_length’, ‘plugin_c_excerpt_modify’, 16);
plugin_c_excerpt_modify (אורך $) {
להחזיר 20;
}

בסופו של דבר, אורך הקטע יהיה 104 מילים. מסננים מבוצעים לפי סדר העדיפות שלהם. לכן הפונקציה של התוסף C מבוצעת תחילה. אם לא הייתה מחוברת לפונקציה אחרת, האורך כעת יהיה 20 מילים. בשלב הבא התוסף א ‘נכנס פנימה והאורך הופך ל -10. לבסוף, התוסף B שוקל פנימה והופך את האורך 104.

do_action () משתמש באותו מנגנון בדיוק, ומבצע את כל הפונקציות הקשורות לקרס המוגדר כפרמטר הראשון.

שים לב שתבנית זו סגורה לחלוטין, היא אינה מסתמכת על הגדרות מיוחדות. אתה יכול להשתמש do_action (‘lol_hook’) בכל מקום שתרצה, במקרה הגרוע ביותר, אין פונקציות קשורות ל- lol_hook. במילים אחרות, יש לנו כבר את התשתית ליצור ווים משלנו!

יצירת ווים משלנו

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

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

$ args = מערך (
‘post_type’ => ‘התקשרות’,
‘post_status’ => ‘כל’,
‘סדר’ => ‘תאריך’,
‘סדר’ => ‘DESC’,
‘posts_per_page’ => 10,
‘שדות’ => ‘מזהים’
);
$ תמונות = WP_Query חדש ($ args);
$ gallery = ‘[‘ .’id gallery of ="’. implode (‘,’, $ תמונות). ‘"’.’] ‘;
הד do_shortcode (גלריה $);

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

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

$ posts_per_page = Apply_filters (‘my_gallery / posts_per_page’, 10);

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

$ args = מערך (
‘post_type’ => ‘התקשרות’,
‘post_status’ => ‘כל’,
‘סדר’ => ‘תאריך’,
‘סדר’ => ‘DESC’,
‘posts_per_page’ => 10,
‘שדות’ => ‘מזהים’
);

$ args = Apply_filters (‘my_gallery / query_args’, $ args);

$ תמונות = WP_Query חדש ($ args);
$ gallery = ‘[‘ .’id gallery of ="’. implode (‘,’, $ תמונות). ‘"’.’] ‘;
הד do_shortcode (גלריה $);

זה כל מה שיש בזה. תוספים אחרים יכולים כעת להשתמש ב- my_gallery / query_args כדי לשנות את הפונקציונליות של הגלריות שנוצרו.

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

סיכום

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

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

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

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map