דף הבית » טריקים וטיפים

להציג רק פוסטים או דפים בתוצאות החיפוש

29 באוגוסט 2010 | מאת ארז שלום | תגובה אחת | תגיות: , , ,

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

חיפוש

חיפוש

הקוד

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

function filter_types_on_search( $query ) {
    if ($query->is_search) {
        $query->set('post_type','post');
    }
    return $query;
}
add_filter('pre_get_posts','filter_types_on_search');

הוספנו פילטר שיפעל לפני שתוצאות החיפוש יוחזרו ממסד הנתונים. הפילטר מוסיף פרמטר שקובע כי התוצאות שיוחזרו יכילו רק פוסטים. ניתן לשנות את סוג תוצאות החיפוש על ידי שינוי המילה posts בשורה $query->set('post_type','post'); לכל סוג תוכן שנרצה (pages במקרה של דפים או שם הפוסט המותאם אישית שנרצה להציג).

שימושים נוספים

דוגמא לתוצאה

דוגמא לתוצאה

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

<form id="searchform" method="get" action="<?php bloginfo('home'); ?>">
<div>
    <input type="text" name="s" id="s" size="15" /><br />
    <input type="submit" value="<?php esc_attr_e('Search'); ?>" />
</div>
</form>

אנו נוסיף לו בחירה של סוג התוכן:

<select name="t">
    <option value="all">הצג הכל</option>
    <option value="posts">הצג פוסטים</option>
    <option value="pages">הצג דפים</option>
</select>

כך שתוצר הסופי יהיה:

<form id="searchform" method="get" action="<?php bloginfo('home'); ?>">
<div>
    <input type="text" name="s" id="s" size="15" /><br />
    <select name="t">
        <option value="all">הצג הכל</option>
        <option value="posts">הצג פוסטים</option>
        <option value="pages">הצג דפים</option>
    </select>
    <input type="submit" value="<?php esc_attr_e('Search'); ?>" />
</div>
</form>

וכעת נוסיף את הקוד הנ"ל עם כמה שינויים בקובץ functions.php בתבנית שלנו:

function filter_types_on_search($query) {
    if ($query->is_search &amp;&amp; isset($_GET['t'])) {
        if($_GET['t'] != 'all'){
            if($_GET['t'] == 'pages'){
                $query->set('post_type','page');
            } elseif($_GET['t'] == 'posts'){
                $query->set('post_type','post');
            }
        }
    }
    return $query;
}
add_filter('pre_get_posts','filter_types_on_search');

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

מאת ארז שלום

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

תגובה אחת »

  • מאור כותב :

    יפה ושימושי

הוסף תגובה !

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

תגיות HTML מורשות לשימוש:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>