我正在為 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粉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/ 或任何其他類似線上網站上檢查正規表示式為了比賽
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
後,前往「設定」>「永久連結」並點擊「儲存變更」以重設刷新規則