新增 URL 時 WordPress 頁面顯示 404
P粉569205478
P粉569205478 2024-01-16 13:17:37
0
2
466

我正在為 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粉569205478
P粉569205478

全部回覆(2)
P粉949190972

試試這個:

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/ 或任何其他類似線上網站上檢查正規表示式為了比賽

P粉105971514
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 後,前往「設定」>「永久連結」並點擊「儲存變更」以重設刷新規則

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!