לסנן את תוצאות החיפוש בוורדפרס
החיפוש של וורדפרס הוא חיפוש בסיסי לא רע. אבל הוא די מוגבל. קיימים הרבה פתרונות לביצוע "התאמות" לחיפוש. חלק מהפתרונות פשוטים, אחרים יותר מורכבים. חלקם מבצעים שינויים לפני החיפוש עצמו, אחרים מבצעים שינויים על תוצאות החיפוש אחרי שהחיפוש הסתיים. בעבר הסברתי איך ניתן להדגיש תוצאות חיפוש, היום אני אסביר איך להגדיר "מה לחפש".
הבעיה
בגדול הבעיה בתהליך החיפוש של וורדפרס היא שאנחנו לא יכולים להגדיר על אילו סוגי תכנים להחיל את החיפוש ובאילו קטגוריות/תגיות להתמקד. אם היה אפשר להסיר פוסטים מסוימים מתוצאות החיפוש או לא להחיל את החיפוש על העמודים, הדבר היה יכול להועיל לנו מאוד.
הפתרון
קיימים מספר פתרונות, חלקם יפים, חלקם מכוערים, חלקם פשוטים וחלקם מורכבים. אנו נתמקד בפתרון מבוסס פילטרים, שלדעתי הוא הפתרון הנוח והיעיל ביותר. הפתרון מבוסס על WP_Query Class. לא ניכנס לעומק העניין אבל כן נספר כי המערכת משתמש במשתנים הבאים למשיכת תוצאות החיפוש:
[s] =>
[error] =>
[m] =>
[p] =>
[post_parent] =>
[subpost] =>
[subpost_id] =>
[attachment] =>
[attachment_id] =>
[name] =>
[hour] =>
[static] =>
[pagename] =>
[page_id] =>
[second] =>
[minute] =>
[day] =>
[monthnum] =>
[year] =>
[w] =>
[category_name] =>
[tag] =>
[cat] =>
[tag_id] =>
[author_name] =>
[feed] =>
[tb] =>
[paged] =>
[comments_popup] =>
[meta_key] =>
[meta_value] =>
[preview] =>
[category__in] =>
[category__not_in] =>
[category__and] =>
[post__in] =>
[post__not_in] =>
[tag__in] =>
[tag__not_in] =>
[tag__and] =>
[tag_slug__in] =>
[tag_slug__and] =>
[post_type] =>
[caller_get_posts] =>
[suppress_filters] =>
[posts_per_page] =>
[nopaging] =>
[comments_per_page] =>
[search_terms] =>
[order] =>
[orderby] =>
)
נציג פה דוגמא אחת, המסננת את תוצאות החיפוש בעזרת המשתנה post_type כך שחיפוש יתבצע רק על פוסטים ללא עמודים. בעזרת הדוגמא הזאת אפשר להבין איך אפשר לסנן את התוצאות חיפוש בעזרת שאר המשתנים.
הקוד
כדי לסנן תוצאות חיפוש, נשתמש בפילטר pre_get_posts, את הקוד הבא נוסיף לקובץ functions.php בערכת העיצוב:
if ($query->is_search) { $query->set('post_type', 'post'); }
return $query;
}
add_filter('pre_get_posts', 'search_filter');
אנו בודקים האם מדובר בחיפוש ($query->is_search) ואם כן, מגדירים משנה שהחיפוש יבוצע רק על פוסטים ולא על עמודים set('post_type', 'post').
קיימים תוספים מורכבים שפועלים על אותו העיקרון בדיוק. אני ניסיתי להציג מה בדיוק עומד מאחורי אותם התוספים, עכשיו אתם יכולים לבנות תוסף חיפוש משלכם. מה גם, שלא כולנו אוהבים תוספים, וחלקנו מעדיפים לתכנת את האתר בעצמנו ולהתאים אותו לצרכים שלנו בעזרת קוד נקי פרי יצירתנו.






אבל מה עושים במקרה שרוצים להרחיב דווקא את החיפוש ולא לצמצם.
בחיפוש הפשוט של וורדפרס הוא לא סורק למשל גם תגיות ותגובות, איך אפשר להרחיב את החיפוש שיחול גם על החלקים הללו?
יש תוסף בשם חפש הכל
Search Everything
https://redmine.sproutventure.com/projects/show/search-everything
ראה בקישור הזה
https://core.sproutventure.com/projects/show/search-everything
אני מכיר את התוסף הנ"ל. אבל אני מאמין שבשביל זה יש איזה קוד פונקציונאלי שמסדר את העניין, זה עדיף מבחינתי על תוסף.
אבל תודה בכל אופן
הוסף תגובה !
להיכנס
תפריט נושאים
ראו גם
ניווט באתר
ברוכים הבאים
פוסטים אחרונים
פרסומת
תגובות אחרונות
הנצפים ביותר
תגים