如果搜索查询与页面标题完全匹配,我试图让搜索表单立即重定向到所需的页面。我发现这段代码非常接近,但我不明白为什么它不能正常工作。
这是我的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');
这会导致重定向到domain.com/keyword/keyword/,而不仅仅是domein.com/keyword/。我重复了这么多次,同时仍然得到相同的结果,所以可能是我。
提前致谢:)
答案 0 :(得分:1)
我用另一种方式解决了。只要只有1个结果,我就会重定向而不是精确搜索。
// 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 ) );
}
}
}