10
ביולי
2010

טיפ וורדפרס: מספר שונה של פוסטים בתוצאות החיפוש

מאת: מאור ברזני | תגובות: 1 | נושאים: וורדפרס
תגיות: , , , |

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

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

המטרה של עמוד תוצאות החיפוש

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

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

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

איך לא לעשות את זה

פוסטים רבים והודעות בפורומים שמתייחסים לנושא זה, ממליצים ברובם להוסיף לפני הלופ את הפונקציה query_posts() ולהוסיף בה פרמטר כדי לשנות את מספר הפוסטים אותם מעוניינים להציג בעמוד תוצאות החיפוש (search.php).

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

פיתרון טוב יותר לנושא – בעזרת פילטר של וורדפרס

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

הכניסו את הקוד הבא לקובץ  functions.php של ערכת העיצוב, או לקובץ פונקציות מותאם אישית:

1
2
3
4
5
6
function tc_change_search_count($queryVars) {
    if ( isset($_REQUEST['s']) )
        $queryVars['posts_per_page'] = 15;
    return $queryVars;
}
add_filter('request', 'tc_change_search_count');

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

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

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

שתפו גם אחרים:
  • email
  • Print
  • RSS
  • Facebook
  • Twitter
  • LinkedIn
  • Google Bookmarks
  • Live
  • PDF
  • MySpace
  • del.icio.us
  • Digg
  • Technorati
  • Yahoo! Bookmarks
  • Yahoo! Buzz
  • Add to favorites

1 תגובה »

פיד RSS לתגובות בפוסט | טראקבק


הוסף תגובה

You can add images to your comment by clicking here.

TechnoCraft - פתרונות אינטרנט


אֶקְסְפֶּרִימֶנְט דוֹט אֶפֶס - וורדפרס, תוכן, טכנולוגיה ועוד כמה דברים - מופעל באמצעות WordPress | פתרונות אינטרנט