2015-05-12 24 views
2

我正在運行一個WP博客。 永久鏈接我將WP base URL設置爲https://www.url.com/blog。 這是必要的,不能改變。如何在博客搜索中更改WP重定向?

如果我嘗試使用WP-Search Widget for Blog,它會失敗。 由於URL WP試圖重定向是錯誤的

(.. /博客 /博客/?S =測試)。

有沒有辦法說WP使用

../blog/?s=test

,而不是

../blog/blog /?s = ...

我試過了: 投入的functions.php代碼(沒有成功):

function fb_change_search_url_rewrite() { 
    if (! empty($_GET['s'])) { 
    wp_redirect(site_url("/") . urlencode(get_query_var('s'))); 
    } 
} 
add_action('template_redirect', 'fb_change_search_url_rewrite'); 

.htaccess不能改變

想法受到了高度評​​價。

更新精確的問題:

調查時使用Chrome的搜索,它表明WP重定向請求。

如果我只能防止WP vom重定向!

鉻控制檯輸出:

遠程地址:10.236.1.21:443
請求URL:https://www.domain.com/blog/?s=schnuffi
請求方法:GET
狀態碼:302實測值
響應頭
內容長度:0
content-type:text/html;字符集= UTF-8
日期:星期三,2015八時52分46秒GMT
位置5月13日:https://www.domain.com/blog/blog/?s=schnuffi
服務器:nginx
狀態:302實測值
版本:HTTP/1.1
....

+0

因此www.url.com/blog是您的主頁嗎?爲什麼不把你的主頁指向那個博客頁面,以便URL是www.url.com,然後永久鏈接不需要有2個「博客」。 – mgrenier

+0

很抱歉,我無法更改主頁的網址。 ** www.domain.com/blog **已修復。 – Pek

+0

我不確定爲什麼你不能改變它只是一個指針的URL,你可以指向任何你喜歡的地方。你有沒有嘗試在Wordpress論壇發帖?這裏有一些非常有幫助的人,也許有更多專門針對wordpress的專業知識。試試這裏... https://wordpress.org/support/forum/how-to-and-troubleshooting – mgrenier

回答

1

刪除以下功能後(我瞭解到你已經在你的代碼中實現):

function change_blog_url() { 
if (is_search() && ! empty($_GET's')) 
    { wp_redirect(home_url("/blog/?s=") . urlencode(get_query_var('s'))); exit(); } 
} 

的WordPress應該停止增加一個額外的「/博客」,網址爲妥善解決。

+1

Pille的一位同事在functions.php中發現了這個問題。現在博客搜索工作。偉大的工作,皮爾。 – Pek

0

嘗試將is_search()函數添加到您的條件中。該功能檢查是否正在顯示搜索結果頁面存檔。 - >更多在Wordpress codex頁面

然後嘗試將exit()函數添加到函數的末尾。

所以你的功能可能看起來像:

function fb_change_search_url_rewrite() { 
    if (is_search() && ! empty($_GET['s'])) { 
    wp_redirect(site_url("/") . urlencode(get_query_var('s'))); exit(); 
    } 
} 
+0

:-)這正是我在問題中提到的。不工作。我需要一種方式說WP:「不要在我的家Url(= www.domain.com/blog)上添加另一個/博客」 – Pek

+0

您可以嘗試使用'home_url()'而不是'site_url()' – pes502

0

在主題目錄在其中創建文件searchform.php,並把 此代碼:

<form role="search" method="get" id="searchform" class="searchform" action="<?php echo esc_url(home_url('/')); ?>"> 
    <div> 
     <label class="screen-reader-text" for="s"><?php _x('Search for:', 'label'); ?></label> 
     <input type="text" value="<?php echo get_search_query(); ?>" name="s" id="s" /> 
     <input type="submit" id="searchsubmit" value="<?php echo esc_attr_x('Search', 'submit button'); ?>" /> 
    </div> 
</form> 

變化形式action屬性不管你想要,默認情況下,它會始終打印家庭網址,這將是您的網站網址。例如:http://example.com/,所以當你的表格被提交時,它會向http://example.com?s=query發出請求。

+0

如果您當前的網站地址是:http://example.com/blog,那麼函數home_url()將自動返回http://example.com/blog,否則您可以使用site_url(); –