it-swarm.com.de

Benutzerdefinierter Seitenbuckel ohne Erstellen eines WP Seite

Ich entwickle ein WP Plugin, in dem ich eine WP Seite namens my-account habe, aber ich habe noch einige weitere untergeordnete Seiten wie account-edit, account-misc etc .. Ich würde diese Seiten gerne so aufrufen mydomain.com/my-account/account-edit und mydomain.com/my-account/account-misc Ich weiß nicht wie Tun Sie dies, ohne WP Seiten zu erstellen. Ich habe add_rewrite_rule ausprobiert, aber das funktioniert nicht so, wie ich es erwartet hatte.

Hier ist mein aktualisierter Code:

add_filter('query_vars', 'add_account_edit_var', 0, 1);
function add_account_edit_var($vars){
    $vars[] = 'account-edit';
    return $vars;
}

add_action( 'init', 'add_account_edit_rule' );
function add_account_edit_rule() {
    add_rewrite_rule(
        '^my-account/account-edit([^/]*)/?',
        'index.php?pagename=my-account&account-edit',
        'top'
    );
}

es funktioniert einwandfrei. Ich habe die URL "Mein Konto/Konto bearbeiten/Seitenvorlage" aufgerufen. Ergebnis: Array ([Seitenname] => Mein Konto [Konto bearbeiten] =>)

Wieder habe ich eine weitere Änderung hinzugefügt:

add_filter('query_vars', 'add_account_misc_var', 0, 1);
function add_account_misc_var($vars){
    $vars[] = 'account-misc';
    return $vars;
}

add_action( 'init', 'add_account_misc_rule' );
function add_account_misc_rule() {
    add_rewrite_rule(
        '^my-account/account-misc([^/]*)/?',
        'index.php?pagename=my-account&account-misc',
        'top'
    );
} 

Es funktioniert nicht in der Vorlagenseite, ich habe die URL mein-Konto/Konto-Verschiedenes/Seite geladen aufgerufen, aber das Ergebnis ist Array ([Seitenname] => mein-Konto) gibt nicht "Konto-Verschiedenes" zurück

So kann ich nicht überprüfen, welche Seite etc ...

1
Riyas Muhammed

Sie sind nah dran, die Abfragevariable für die Übergabe des Seiten-Slugs lautet pagename:

add_filter('query_vars', 'add_account_edit_var', 0, 1);
function add_account_edit_var($vars){
    $vars[] = 'account-edit';
    return $vars;
}

add_action( 'init', 'add_account_edit_rule' );
function add_account_edit_rule() {
    add_rewrite_rule(
        '^my-account/([^/]*)/?',
        'index.php?pagename=my-account&account-edit',
        'top'
    );
}

Um den Wert in Ihrer Regel zu erfassen, müssen Sie den Wert in $matches[1] übergeben:

add_rewrite_rule(
    '^my-account/([^/]*)/?',
    'index.php?pagename=my-account&account-edit=$matches[1]',
    'top'
);
1
Milo