suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Die WordPress-Seite zeigt beim Hinzufügen einer URL 404 an

Ich füge Rewrite-Regeln zu einem PHP-Skript hinzu, das in einer WordPress-Seite mit dem Permalink kb

enthalten ist

Auf diese Weise kann ich domain.com/kb besuchen und die Seite anzeigen.

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');

Aber wenn ich eine Seite besuche, deren URL andere Zeichenfolgen enthält, erhalte ich eine 404.

Wenn ich also domain.com/kb besuche, wird die richtige Seite angezeigt, und wenn ich domain.com/kb/84/92 besuche, wird 404 angezeigt

Ich muss nur in der Lage sein, zusätzliche URL-Parameter in PHP-Skripten wie $_GET["kb_cat"]

zu lesen
P粉569205478P粉569205478346 Tage vor543

Antworte allen(2)Ich werde antworten

  • 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/ 或任何其他类似在线网站上检查正则表达式为了比赛

    Antwort
    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 后,转到“设置”>“永久链接”并点击“保存更改”以重置刷新规则

    Antwort
    0
  • StornierenAntwort