Relevanssi הוא אחד מתוספי החיפוש החזקים ביותר עבור וורדפרס. הוא מחליף את מנוע החיפוש הבסיסי של וורדפרס במנוע מתקדם וגמיש שתומך בהתאמה מטושטשת (fuzzy matching), הדגשות, סוגי פוסטים מותאמים אישית ועוד.
בפוסט הזה נסקור את ההוקים והפילטרים הנפוצים והשימושיים ביותר של Relevanssi, כולל דוגמאות קוד שיעזרו לכם ליישם אותם באתר שלכם.
בין אם אתם רוצים לקבוע אילו תכנים ייכללו באינדקס, לשנות את אופן הדירוג של תוצאות או לעצב את הפלט – Relevanssi מאפשר את כל זה באמצעות פילטרים.
1. relevanssi_indexing_restriction
הפילטר הזה מאפשר לקבוע אילו פוסטים או סוגי תוכן ייכללו באינדקס.
add_filter( 'relevanssi_indexing_restriction', function( $restriction ) {
global $wpdb;
return "post_type = 'post' OR post_type = 'page'";
});
השתמשו בו אם ברצונכם לאנדקס רק פוסטים ועמודים, תוך החרגת מוצרים, קבצים או פוסטים מותאמים אחרים.
2. relevanssi_do_not_index
דרך נוספת להחריג תכנים מהאינדקס לפי לוגיקה דינמית.
add_filter( 'relevanssi_do_not_index', function( $do_not_index, $post_id ) {
if ( get_post_meta( $post_id, '_exclude_from_search', true ) === '1' ) {
return true;
}
return $do_not_index;
}, 10, 2 );
אפשר לשלב את זה עם שדה מותאם אישית או טוגל של ACF, כדי לאפשר לעורכים להחריג פוסטים מהחיפוש בקלות.
3. relevanssi_hits_filter
שינוי תוצאות החיפוש לפני שהן מוצגות – אידאלי לסינון, הגבלה או שינוי סדר התוצאות.
add_filter( 'relevanssi_hits_filter', function( $hits ) {
// הסרת פוסטים מקטגוריה מסוימת
$hits[0] = array_filter( $hits[0], function( $hit ) {
return !has_category( 10, $hit->ID );
});
return $hits;
});
4. relevanssi_excerpt
התאמה אישית של התקציר המוצג בתוצאות החיפוש.
add_filter( 'relevanssi_excerpt', function( $excerpt, $post, $query ) {
return wp_trim_words( $excerpt, 20, '...' );
}, 10, 3 );
שימושי במיוחד לקיצור התצוגה או הוספת עיצוב ייחודי.
5. relevanssi_content_to_index
שליטה על התוכן שמתווסף לאינדקס עבור כל פוסט – כולל אפשרות להוסיף או להסיר שדות מותאמים.
add_filter( 'relevanssi_content_to_index', function( $content, $post ) {
$custom_field = get_post_meta( $post->ID, 'custom_field_name', true );
return $content . ' ' . $custom_field;
}, 10, 2 );
כך ניתן לאנדקס גם שדות מותאמים, שדות חוזרים ונתוני ACF שלא נכללים בדרך כלל.
6. relevanssi_match
פילטר מתקדם שמאפשר לשנות את אופן ההתאמה של המילים בזמן החיפוש.
add_filter( 'relevanssi_match', function( $match ) {
if ( $match['term'] === 'free' ) {
$match['weight'] = 0; // הפחתת חשיבות של מונחים מסוימים
}
return $match;
});
7. הגנה על מנוע החיפוש של Relevanssi מפני שימוש לרעה
באתרים גדולים במיוחד, מנוע החיפוש עלול למשוך בוטים ומונחים חשודים. ניתן למנוע גישה לתוצאות חיפוש לא רלוונטיות או מזיקות על ידי חסימת בוטים ומילים בעייתיות.
חסימת בוטים בקובץ robots.txt
הקוד הבא מוסיף הגבלות לקובץ robots.txt הווירטואלי של האתר ומונע מבוטים לסרוק עמודי חיפוש:
add_action( 'do_robots', 'rlv_block_bots_robots_txt' );
function rlv_block_bots_robots_txt() {
?>
User-agent: *
Disallow: /search/
Disallow: /?s=
<?php
}
חסימת מונחי חיפוש מסוימים
באמצעות הקוד הבא, ניתן לזהות מונחים בעייתיים ולחסום את הבקשה באמצעות קוד 410 Gone:
add_filter( 'pre_get_posts', 'rlv_block_search' );
function rlv_block_search( $query ) {
if ( ! empty( $query->query_vars['s'] ) ) {
$blacklist = array( '大奖', 'q82' ); // מונחים שיש לחסום
foreach ( $blacklist as $term ) {
if ( mb_stripos( $query->query_vars['s'], $term ) !== false ) {
http_response_code( 410 );
exit();
}
}
}
}
שני הפילטרים הפשוטים האלה יכולים לצמצם משמעותית את כמות הסריקות המזיקות והתעבורה הלא רצויה על מנוע החיפוש הפנימי של האתר.
סיכום
Relevanssi מציע רמת התאמה אישית שקשה להתחרות בה. בין אם אתם מפתחים ממשק חיפוש מותאם אישית או בעלי אתרים המעוניינים לשפר את חוויית המשתמש, הפילטרים שראינו כאן הם הכלים שלכם.
המפתח לשליטה במנוע החיפוש הוא שילוב חכם של פילטרים – סינון תוכן לאינדקס, התאמת משקלים, ושיפור התוצאה המוצגת.
עם מספר פעולות פשוטות וקצת ניסוי וטעייה, ניתן להתאים את Relevanssi לצרכים המדויקים של האתר והקהל שלכם. מאינדוקס חכם ועד חסימת מונחים לא רצויים – הגמישות היא אינסופית.