web-dev-qa-db-ja.com

カスタムページの書き換えルールを追加する

作成者固有のURLで作成者固有のページを作成しようとしていて、うまく機能していましたが、このURLを作成したときに次の2つの要因を考慮していません

  1. 著者名の競合(類似した名前)。
  2. 著者ページに追加されるページングオプション(公開された投稿用)

これが私の最初のルールです

function add_my_rule() {    
    global $wp; 
    $wp->add_query_var('args');   
    add_rewrite_rule('writer\/(.*)','index.php?pagename=writer&args=$matches[1]','top'); 
    /*global $wp_rewrite;
    $wp_rewrite->flush_rules();*/
}
add_action('init', 'add_my_rule'); 

これはURLの作業ファイルでした

www.myblog.com/writer/umesh-awasthi ,

しかし、同じ名前の著者が複数存在する可能性があり、これにより問題が発生します。したがって、SO

www.myblog.com/writer/001/umesh-awasthiここで、001は、常に一意のユーザーIDです。

2番目の問題はページングに関するものです。著者ページでページングを作成できますが、ユーザーが2番目のページをクリックすると、URLが次のようになります。

http://localhost/blog/wordpress/writer/umesh-awasthi/page/2/私のURL書き換えルールに従って、次のデータをパラメーターumesh-awasthi/page/2として取得します。これは、著者名をumesh-awasthiとして期待するため、クエリが機能しないことを意味します。 umesh-awasthi/page/2として

私の質問は、3つの異なる変数で次の方法でデータを取得するようにルールを書き換えることができますか

  1. ユーザーID
  2. 著者名
  3. ページ番号(終了する場合)WPが新しく、書き直して、事前にこの感謝をどのように達成できるかわからない
4
Umesh Awasthi
function add_my_rule() {    
    global $wp; 
    $wp->add_query_var('args');   
    $wp->add_query_var('arg_username');
    add_rewrite_rule('writer/([0-9]+)/([^/]*)/page/([0-9]+)','index.php?pagename=writer&args=$matches[1]&arg_username=$matches[2]&paged=$matches[3]','top');
    add_rewrite_rule('writer/([0-9]+)/([^/]*)','index.php?pagename=writer&args=$matches[1]&arg_username=$matches[2]','top');
    /*global $wp_rewrite;
    $wp_rewrite->flush_rules();*/
}
add_action('init', 'add_my_rule');

これでうまくいくはずです。 writer/user_id/username(usernameはリライトでは使用されませんが、必ず機能させるためのものです。2番目のリライトは、ページ区切りを追加する点を除いて同じです)。


編集:上記のコードでarg_usernameを追加しました。

7
Rob Vermeer