web-dev-qa-db-fra.com

Comment créer un point de terminaison sans créer de sous-points de terminaison?

J'essaie de créer un nouveau point de terminaison à l'aide de add_rewrite_endpoint(). Voici mon 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 );
} );

Je peux maintenant visiter exemple.com/author/my-endpoint, ce qui est excellent, mais les points de terminaison "sous" semblent également fonctionner. Par exemple:

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

Comment puis-je créer mon noeud final sans créer également ces noeuds finaux?

1
henrywright

La règle de réécriture ajoutée par:

add_rewrite_endpoint( 'my-endpoint', EP_AUTHORS );

est

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

=>

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

de sorte qu'il suppose rien après par exemple /author/henrywright/my-endpoint/....

Vous pouvez plutôt essayer de le remplacer par add_rewrite_rule(), par exemple.

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