סרגל כלים קידום אתרים
דצמ'
26

2


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

 


 

שגיאה בין תוספי וורדפרס
דוגמה טובה היא בעיה בה נתקלתי לא מזמן בעת בניית אתר jerusalemlodges. בדף הבית יש להם סליידר ובדפים פנימיים (Single.php) יש להם גלריית תמונות. מכיוון שגלריית התמונות קיימת רק בפוסטים בודדים והסליידר קיים בדף הבית אין שום סיבה שהסקריפטים יטענו לכל אורך האתר… זאת פרקטיקה גרועה גם מבחינת מהירות האתר.

 

 

הבעיה היתה ש..

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

 

הפתרון היה…

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

  • מה: קוד שמסיר סקריפטים מסוימים שנרצה שלא יופיע בראש המסמך
  • איפה: בקובץ Functions.php או קובץ שנכלול לתוכו
add_action('wp_print_scripts', 'sg_cleanUp_gallery',0);
function sg_cleanUp_gallery() {
	if (is_home() || is_page() || is_category()) {
		// REMOVING JS SCRIPTS
		wp_deregister_script('script_name');
		wp_deregister_script('script_name');
		wp_deregister_script('script_name');
		wp_deregister_script('script_name');
	}
}

עוברים על הקוד!

1
add_action('wp_print_scripts', 'sg_cleanUp_gallery',0);
דוגמה:
add_action(' name of action to hook to', 'name of the function',priority);

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

2
function sg_cleanUp_gallery() {
	// Here we place our commands
}

 

דוגמה:
function sg_cleanUp_gallery() {
	echo 'i would apear on your code!';
}

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

3
if (is_home() || is_page() || is_category()) {
	// i would apear only in the homepage OR in pages OR in categories
}

 

דוגמה:
if (is_home()) {
	echo 'ברוכים הבאים לדף הבית שלנו!';
}

במילים פשוטות:
ההתניה הזאת בודקת אם אנחנו נמצאים בדף הבית (is_home) או בדף רגיל כלומר לא פוסט (is_page) או בקטגוריה (is_category)… אם התנאי נענה בחיוב מה שבתוך הסוגריים המסולסלים יעבוד..

4
// REMOVING JS SCRIPTS
wp_deregister_script('script_name');
wp_deregister_script('script_name');
wp_deregister_script('script_name');
wp_deregister_script('script_name');

 

דוגמה:
wp_deregister_script('MouseWheelJS');

במילים פשוטות:
שורות קוד אלו מסירות את הרישום של סקריפט Javascript מסוים אשר הוצמד לראש המסמך (header) שלנו בעזרת הפקודה wp_deregister_script.

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

אהבתם את המאמר? פרגנו לנו עם LIKE

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





 

2 תגובות למאמר “מגדירים לתוסף מתי לטעון את סקריפטים!”

  1. יחיאל כתב:

    28 בינואר 2012 בשעה 23:43

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

    • שגיב SEO כתב:

      29 בינואר 2012 בשעה 1:48

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

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

      לדוגמה.. נניח שיש לנו סליידר בדף הבית. הסליידר הזה צריך 2 ג'אווה סקריפטים וקובץ CSS אחד לעבוד אבל יש את הסליידר הזה רק בדף הבית.. למה לנו לטעון את כל הקבצים שהוא צריך בכל דף באתר?? במקום זה אנחנו עושים התניה כמו "is_home" ואם לא אל תטען את הקבצים האלו.. ככה חסכנו זמן טעינה משמעותי לאורך כל דפי האתר.

השאר תגובה