将精确的wordpress搜索重定向到页面

时间:2017-05-01 13:09:16

标签: php wordpress search

如果搜索查询与页面标题完全匹配,我试图让搜索表单立即重定向到所需的页面。我发现这段代码非常接近,但我不明白为什么它不能正常工作。

这是我的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/。我重复了这么多次,同时仍然得到相同的结果,所以可能是我。

提前致谢:)

1 个答案:

答案 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 ) );
    }
}
}