這樣雖然我的網(wǎng)站沒有這個內(nèi)容,但訪問過來都會有下面顯示:
最開始我想通過301重定向所有訪問地址里面有/?=的來源搜索自動轉(zhuǎn)向網(wǎng)站首頁,這樣就不會看到這種情況,在寶塔面板試了好久,沒有成功。只能通過修改文件實現(xiàn)了這個方法,在當前主題文件夾里面的functions.php加入下面代碼,然后保存。
/* WordPress搜索結(jié)果中無內(nèi)容時自動跳轉(zhuǎn)到網(wǎng)站首頁 */
add_action('template_redirect', 'redirect_single_post');
function redirect_single_post() {
if (is_search()) {
global $wp_query;
if ($wp_query->post_count == 0 && $wp_query->max_num_pages == 0) {
wp_redirect( home_url() );
exit;
}
}
}
這樣,別人點擊這樣的垃圾鏈接的話,就直接跳轉(zhuǎn)到本站首頁了,如果是搜索正常關(guān)鍵字,則顯示正常搜索頁。
還有這下面這種方法,無論有沒有搜索結(jié)果都自動跳轉(zhuǎn)到首頁(此方法沒測試過)
//禁用WordPress前臺搜索功能
function disable_search( $query, $error = true ) {
if (is_search() && !is_admin()) {
$query->is_search = false;
$query->query_vars['s'] = false;
$query->query['s'] = false;
if ( $error == true )
// 執(zhí)行搜索后顯示的錯誤頁面
$query->is_home = true; //跳轉(zhuǎn)到首頁
// $query->is_404 = true;//跳轉(zhuǎn)到404頁
}
}
add_action( 'parse_query', 'disable_search' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );
第三種方法就是把wordpress站內(nèi)搜索直接替換成百度搜索。
代碼:
//wordpress站內(nèi)搜索替換為百度搜索
function wp_use_baidu_search( $wp_query ) {
$s = '';
if (isset($wp_query->query_vars['s'])) {
$s = trim($wp_query->query_vars['s']);
}
if (!$s) { // 空搜索 不進行跳轉(zhuǎn)
return;
}
// 獲取當前網(wǎng)站域名
$host = strtolower($_SERVER['HTTP_HOST']);
// 使用 baidu
$search_engine = 'https://www.baidu.com/s?ie=UTF-8&wd=';
$query = urlencode($s . ' site:' . $host);
// 進行跳 轉(zhuǎn)
wp_redirect($search_engine . $query);
// 不再繼續(xù)
exit;
}
// 加入 替換處理
add_action('parse_query', 'wp_use_baidu_search');
效果如下:
別人點擊收錄的垃圾鏈接就是這樣的。
最開始測試時,搜索英文或者數(shù)字的話,搜索結(jié)果是正常的,但搜索中文的話,在百度搜索的中文被轉(zhuǎn)義了,也就是顯示亂碼。如下圖
找到好久,才找到解決的方法,找到search的相關(guān)代碼(一般在header.php),把里面的
<?php echo home_url('/search/'); ?>
修改為:
<?php echo home_url('/?s='); ?>
如果搜索結(jié)果前面多個/的話,直接把上面的/去掉就行了。
參考文章:
]]>