2017-05-01 3 views
1

Ich versuche, ein Suchformular sofort auf die gewünschte Seite umleiten, wenn die Suchanfrage eine genaue Übereinstimmung mit einem Seitentitel ist. Ich habe dieses Stück Code gefunden, der ziemlich nah kommt, aber ich verstehe nicht, warum es nicht so funktioniert, wie es sollte.Redirect exakte Wordpress-Suche auf Seite

Dies ist in meinem functions.php

// Redirect on exact match 
function lab_title_match() { 
    if (is_search()) { 
     global $wp_query,$wpdb; 
     $s_str = $wp_query->query_vars['s']; 
     $m = $wpdb->get_var($wpdb->prepare("SELECT ID FROM {$wpdb->posts} WHERE post_title = %s",$s_str)); 
     if (!empty($m)) { 
      wp_safe_redirect(get_permalink($m)); 
      exit(); 
     } 
    } 
} 
add_filter('pre_get_posts','lab_title_match'); 

Dies führt zu einer Umleitung statt nur domein.com/keyword/ domain.com/keyword/keyword/. Ich habe dies mehrfach umgeschrieben, während ich immer noch dasselbe Ergebnis erzielt habe, also ist es wahrscheinlich ich.

Vielen Dank im Voraus :)

Antwort

0

ich es eine andere Art und Weise gelöst. Statt einer exakten Suche leite ich um, solange es nur 1 Ergebnis gibt.

// Redirect on 1 result 
add_action('template_redirect', 'lab_redirect'); 
function lab_redirect() { 
if (is_search()) { 
    global $wp_query; 
    if ($wp_query->post_count == 1) { 
     wp_redirect(get_permalink($wp_query->posts['0']->ID)); 
    } 
} 
}