להציג רק פוסטים או דפים בתוצאות החיפוש
החיפוש בוורדפרס נבנה כך שהוא יציג לנו בתוצאות החיפוש כל דבר שהוא יכול להציג: פוסטים, דפים וגם פוסטים מותאמים אישית שהוספנו למערכת. אך אנו לא תמיד נרצה שבתוצאות החיפוש יוצגו גם פוסטים וגם דפים, אלא נרצה להציג רק פוסטים או רק דפים, או שאולי רק פוסט מותאם אישית שיצרנו. בעבר למדנו איך לסנן תוצאות חיפוש, היום נרחיב קצת על הנושא.
הקוד
כדי לסנן תוצאות חיפוש, נשתמש בפילטר pre_get_posts, את הקוד הבא נוסיף לקובץ functions.php בערכת העיצוב:
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 שבאה עם וורדפרס):
<div>
<input type="text" name="s" id="s" size="15" /><br />
<input type="submit" value="<?php esc_attr_e('Search'); ?>" />
</div>
</form>
אנו נוסיף לו בחירה של סוג התוכן:
<option value="all">הצג הכל</option>
<option value="posts">הצג פוסטים</option>
<option value="pages">הצג דפים</option>
</select>
כך שתוצר הסופי יהיה:
<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 בתבנית שלנו:
if ($query->is_search && 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');
כעת ליד תיבת החיפוש שלכם תתווסף תיבת בחירה המאפשרת לבחור את סוגי התכנים בהם יבוצע החיפוש – פוסטים, דפים או שניהם.













יפה ושימושי
הוסף תגובה !