書き換えルールを作成しました
add_rewrite_rule("^user/(\d+)/(myaccount)/?", 'index.php?pagename=$matches[2]&user_id=$matches[1]','top');
そのため、ユーザーがexample.com/user/123/myaccount/にアクセスすると、スラッグ 'myaccount'を含むワードプレスページを使用し、user_idとして '123'を渡す必要があります。
書き換えルールをフラッシュし、Monkeyman Rewrite Analyzerを使用してチェックしていますが、そのパターンと一致していないようです。
誰が私が間違っていることを指摘できますか?
私は私のコメントから提案をテストしました、そしてそれはうまくいきました。
(myaccount)
から括弧を削除し、URLの$matches[2]
をmyaccount
に変更します。
function wpse_287203_rewrite_rule() {
add_rewrite_rule( '^user/(\d+)/myaccount/?', 'index.php?pagename=myaccount&user_id=$matches[1]', 'top' );
}
add_action( 'init', 'wpse_287203_rewrite_rule' );
(myaccount)
は全世界と一致しません。それはもう少し複雑です。正確なWordに一致する方法については、 このスタックオーバーフローの答え を参照してください。手動でWordをadd_rewrite_rule()
の2番目の引数に入れることができるので、ここでそれを行う必要はありません。
また、それは問題の一部ではありませんでした、しかしそれは次に来るものです。 user_id
にアクセスするには、それを有効なクエリ変数のリストに追加する必要があります。
function wpse_287203_query_vars( $vars ) {
$vars[] = 'user_id';
return $vars;
}
add_filter( 'query_vars', 'wpse_287203_query_vars' );
そのURLでget_query_var()
を使ってユーザーIDを取得することができます。
$user_id = get_query_var( 'user_id' );
$userdata = get_userdata( $user_id );