首頁  >  問答  >  主體

新增 URL 時 WordPress 頁面顯示 404

我正在為 PHP 腳本添加重寫規則,該腳本包含在帶有永久連結 kb 的 WordPress 頁面中

這樣我就可以造訪domain.com/kb 並顯示該頁面。

function wdm_add_rewrite_rules() {
    add_rewrite_rule( '^kb/([^/]+)/?$', 'kb?kb_cat=$matches[1]&kb_seq=1', 'top');
}
add_action('init', 'wdm_add_rewrite_rules');

但是當我訪問網址中包含其他字串的頁面時,我收到 404。

所以當我造訪domain.com/kb時顯示正確的頁面,然後造訪domain.com/kb/84/92時,它顯示404

我只需要能夠讀取 PHP 腳本中的附加 url 參數,例如 $_GET["kb_cat"]

#
P粉569205478P粉569205478247 天前469

全部回覆(2)我來回復

  • P粉949190972

    P粉9491909722024-01-17 11:01:28

    試試這個:

    function wdm_add_rewrite_rules() {
        add_rewrite_rule( '^kb\/([^\/]+)\/?([^\/]+)$', 'kb?kb_cat=$matches[1]&kb_seq=1', 'top');
    }
    add_action('init', 'wdm_add_rewrite_rules');

    您可以在 https://regex101.com/ 或任何其他類似線上網站上檢查正規表示式為了比賽

    回覆
    0
  • P粉105971514

    P粉1059715142024-01-17 00:28:54

    function wdm_add_rewrite_rules() {
        add_rewrite_rule( '^kb$', 'index.php?kb_cat=$matches[1]&kb_seq=1', 'top');
    }
    add_action('init', 'wdm_add_rewrite_rules');

    更進一步並使用參數:

    function add_query_vars_filter( $vars ){
        $vars[] = "kb_cat";
        $vars[] = "kb_seq";
        return $vars;
    }
    add_filter( 'query_vars', 'add_query_vars_filter' );

    然後載入自訂模板檔案:

    function include_custom_template($template){
    
        if(get_query_var('kb_cat') && get_query_var('kb_seq')){
            $template = get_template_directory() ."/my-custom-template.php";
        } 
       
        return $template;    
    }
    
    add_filter('template_include', 'include_custom_template');

    新增至 functions.php 後,前往「設定」>「永久連結」並點擊「儲存變更」以重設刷新規則

    回覆
    0
  • 取消回覆