Do Not Use Standard Query Param in Custom Search

在 WordPress 上實作自訂的供應商後台搜尋功能時,用導向到 example.com?s=keyword 這樣的方式來帶資料,但不知為何觸發了檢查供應商瀏覽頁面權限的功能,被導向到供應商登入頁面,而不是預期中的被導向回訂單管理頁面

請資深同事協助檢查之後,才確定 $_GET['s'] 是 WordPress 預設保留的搜尋參數,會在當下的頁面中尋找關鍵字

例如 example.com?s=keyword 就是在 example.com 的首頁搜尋 “keyword” 這段字串。如果在頁面中找不到關鍵字的話,就會重新導向到 404 頁面

因此才會觸發了檢查供應商瀏覽頁面權限的功能,而又再被導向到供應商登入頁面

How to pass a search $_GET parameter to a new custom search page? - WordPress Development Stack Exchange

解法之一是不要用 $_GET['s'] 改用其他參數名稱;解法之二則是修改搜尋結果的樣板檔案,並把樣板檔案加入供應商瀏覽頁面權限的白名單中

延伸閱讀:Creating a Search Page « WordPress Codex