webentwicklung-frage-antwort-db.com.de

Wie erstelle ich einen Endpunkt, ohne Unterendpunkte zu erstellen?

Ich versuche, mit add_rewrite_endpoint() einen neuen Endpunkt zu erstellen. Hier ist mein Code:

// Add query var.
add_filter( 'query_vars', function( $vars ) {
    $vars[] = 'my-endpoint';
    return $vars;
} );

// Add endpoint.
add_action( 'init', function() {
    add_rewrite_endpoint( 'my-endpoint', EP_AUTHORS );
} );

Ich kann jetzt example.com/author/my-endpoint besuchen, was großartig ist, aber "Unter" -Endpunkte scheinen auch zu funktionieren. Zum Beispiel:

  • example.com/author/my-endpoint/random
  • example.com/author/my-endpoint/anything-here

Wie kann ich meinen Endpunkt erstellen, ohne auch diese "Unter" -Endpunkte zu erstellen?

1
henrywright

Die Umschreiberegel hinzugefügt von:

add_rewrite_endpoint( 'my-endpoint', EP_AUTHORS );

ist

author/([^/]+)/my-endpoint(/(.*))?/?$

=>

index.php?author_name=$matches[1]&my-endpoint=$matches[3]

so nimmt es irgendetwas an, nachdem z.B. /author/henrywright/my-endpoint/....

Sie können stattdessen versuchen, es durch add_rewrite_rule() zu ersetzen, z.

add_rewrite_rule( 
    '^author/([^/]+)/my-endpoint/?$', 
    'index.php?author_name=$matches[1]&my-endpoint=1', 
    'top'
);
1
birgire